Commit 37950a05 authored by jiangpeng's avatar jiangpeng Committed by 33cn

privacy:remove rpc createUtxos

parent 6a6fefbe
......@@ -11,6 +11,7 @@ import (
)
//CreateUtxosCase pub2priv case
//Deprecated:已经删除CreateUtxo功能, 用pub2priv替代
type CreateUtxosCase struct {
types.BaseCase
From string `toml:"from"`
......
......@@ -213,27 +213,3 @@ amount = "3"
checkItem = ["balance", "utxo"]
dep = ["priv2pub2"]
fail = true
#createutxosCase
[[CreateutxosCase]]
id = "privCreateutxos"
command = "privacy createutxos -a 20 -f 12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv -p 0a9d212b2505aefaa8da370319088bbccfac097b007f52ed71d8133456c8185823c8eac43c5e937953d7b6c8e68b0db1f4f03df4946a29f524875118960a35fb"
from = "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
to = "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
amount = "20"
checkItem = ["balance", "utxo"]
dep = ["trans1"]
#failcreateutxosCase
[[CreateutxosCase]]
id = "failprivCreateutxos"
command = "privacy createutxos -a 1000 -f 12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv -p 0a9d212b2505aefaa8da370319088bbccfac097b007f52ed71d8133456c8185823c8eac43c5e937953d7b6c8e68b0db1f4f03df4946a29f524875118960a35fb"
from = "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
to = "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
amount = "1000"
checkItem = ["balance", "utxo"]
dep = ["trans1"]
fail = true
......@@ -41,7 +41,6 @@ func PrivacyCmd() *cobra.Command {
createPriv2PubTxCmd(),
showAmountsOfUTXOCmd(),
showUTXOs4SpecifiedAmountCmd(),
createUTXOsCmd(),
showPrivacyAccountInfoCmd(),
listPrivacyTxsCmd(),
rescanUtxosOptCmd(),
......@@ -431,58 +430,6 @@ func parseShowUTXOs4SpecifiedAmountRes(arg interface{}) (interface{}, error) {
return ret, nil
}
func createUTXOsCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "createutxos",
Short: "Create specified count UTXOs with specified amount",
Run: createUTXOs,
}
createUTXOsFlag(cmd)
return cmd
}
func createUTXOsFlag(cmd *cobra.Command) {
cmd.Flags().StringP("from", "f", "", "from account address")
cmd.MarkFlagRequired("from")
cmd.Flags().StringP("pubkeypair", "p", "", "to view spend public key pair")
cmd.MarkFlagRequired("pubkeypair")
cmd.Flags().Float64P("amount", "a", 0, "amount")
cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("symbol", "s", "BTY", "asset symbol, default BTY")
cmd.Flags().StringP("exec", "e", "coins", "asset executor(coins, token, paracross), default coins")
cmd.Flags().StringP("note", "n", "", "transfer note")
cmd.Flags().Int64P("expire", "x", 0, "transfer expire, default one hour")
}
func createUTXOs(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
from, _ := cmd.Flags().GetString("from")
pubkeypair, _ := cmd.Flags().GetString("pubkeypair")
note, _ := cmd.Flags().GetString("note")
amount, _ := cmd.Flags().GetFloat64("amount")
amountInt64 := int64(amount*types.InputPrecision) * types.Multiple1E4
expire, _ := cmd.Flags().GetInt64("expire")
symbol, _ := cmd.Flags().GetString("symbol")
assetExec, _ := cmd.Flags().GetString("exec")
if expire <= 0 {
expire = int64(time.Minute * 10)
}
params := &pty.ReqCreateUTXOs{
Tokenname: symbol,
Sender: from,
Pubkeypair: pubkeypair,
Amount: amountInt64,
Note: note,
Expire: expire,
AssetExec: assetExec,
}
var res rpctypes.ReplyHash
ctx := jsonclient.NewRPCCtx(rpcLaddr, "privacy.CreateUTXOs", params, &res)
ctx.Run()
}
// showPrivacyAccountInfoCmd
func showPrivacyAccountInfoCmd() *cobra.Command {
cmd := &cobra.Command{
......
......@@ -196,18 +196,6 @@ message PrivacyAction4Print {
int32 ty = 4;
}
message ReqCreateUTXOs {
// string viewPublic = 1; //接收人可见公钥A
// string spendPublic = 2; //接收人花费公钥B
string tokenname = 3;
int64 amount = 4;
string note = 5;
string sender = 6; //发送人地址
string pubkeypair = 8;
int64 expire = 9;
string assetExec = 10;
}
message ReplyPrivacyPkPair {
bool showSuccessful = 1;
// string viewPub = 2;
......@@ -435,8 +423,6 @@ service privacy {
// Privacy Trading
// 显示指定地址的公钥对信息,可以作为后续交易参数
rpc ShowPrivacyKey(ReqString) returns (ReplyPrivacyPkPair) {}
// 创建一系列UTXO
rpc CreateUTXOs(ReqCreateUTXOs) returns (Reply) {}
// 扫描UTXO以及获取扫描UTXO后的状态
rpc RescanUtxos(ReqRescanUtxos) returns (RepRescanUtxos) {}
// 使能隐私账户
......
......@@ -8,7 +8,6 @@ import (
"encoding/hex"
"encoding/json"
"github.com/33cn/chain33/common"
rpctypes "github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types"
pty "github.com/33cn/plugin/plugin/dapp/privacy/types"
......@@ -24,15 +23,6 @@ func (g *channelClient) ShowPrivacyKey(ctx context.Context, in *types.ReqString)
return data.(*pty.ReplyPrivacyPkPair), nil
}
// 创建一系列UTXO
func (g *channelClient) CreateUTXOs(ctx context.Context, in *pty.ReqCreateUTXOs) (*types.Reply, error) {
data, err := g.ExecWalletFunc(pty.PrivacyX, "CreateUTXOs", in)
if err != nil {
return nil, err
}
return data.(*types.Reply), nil
}
// 扫描UTXO以及获取扫描UTXO后的状态
func (g *channelClient) RescanUtxos(ctx context.Context, in *pty.ReqRescanUtxos) (*pty.RepRescanUtxos, error) {
data, err := g.ExecWalletFunc(pty.PrivacyX, "RescanUtxos", in)
......@@ -95,17 +85,6 @@ func (c *Jrpc) ShowPrivacyKey(in *types.ReqString, result *json.RawMessage) erro
return err
}
// CreateUTXOs create utxos for json rpc
func (c *Jrpc) CreateUTXOs(in *pty.ReqCreateUTXOs, result *interface{}) error {
reply, err := c.cli.CreateUTXOs(context.Background(), in)
if err != nil {
return err
}
*result = rpctypes.ReplyHash{Hash: common.ToHex(reply.GetMsg())}
return nil
}
// GetPrivacyTxByAddr get all privacy transaction list by param
func (c *Jrpc) GetPrivacyTxByAddr(in *pty.ReqPrivacyTransactionList, result *interface{}) error {
if in.Direction != 0 && in.Direction != 1 {
......
......@@ -8,7 +8,6 @@ import (
"fmt"
"strings"
"testing"
"time"
commonlog "github.com/33cn/chain33/common/log"
"github.com/33cn/chain33/rpc/jsonclient"
......@@ -47,7 +46,6 @@ func TestRPCChannel(t *testing.T) {
{fn: testShowPrivacyAccountSpend},
{fn: testShowAmountsOfUTXO},
{fn: testShowUTXOs4SpecifiedAmount},
{fn: testCreateUTXOs},
{fn: testListPrivacyTxs},
{fn: testRescanUtxosOpt},
{fn: testEnablePrivacy},
......@@ -121,22 +119,6 @@ func testShowUTXOs4SpecifiedAmount(t *testing.T, jrpc *jsonclient.JSONClient) er
return err
}
func testCreateUTXOs(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := &pty.ReqCreateUTXOs{
AssetExec: "coins",
Tokenname: types.BTY,
Sender: "1JSRSwp16NvXiTjYBYK9iUQ9wqp3sCxz2p",
Pubkeypair: "92fe6cfec2e19cd15f203f83b5d440ddb63d0cb71559f96dc81208d819fea85886b08f6e874fca15108d244b40f9086d8c03260d4b954a40dfb3cbe41ebc7389",
Amount: 123456,
Note: "for test",
Expire: int64(time.Hour),
}
var res rpctypes.ReplyHash
err := jrpc.Call("privacy.CreateUTXOs", params, &res)
return err
}
func testListPrivacyTxs(t *testing.T, jrpc *jsonclient.JSONClient) error {
params := pty.ReqPrivacyTransactionList{
Tokenname: types.BTY,
......@@ -147,7 +129,7 @@ func testListPrivacyTxs(t *testing.T, jrpc *jsonclient.JSONClient) error {
Seedtxhash: []byte("0xa64296792f90f364371e0b66fdac622080ceb7b2537ff9152e189aa9e88e61bd"),
}
var res rpctypes.WalletTxDetails
err := jrpc.Call("privacy.CreateUTXOs", params, &res)
err := jrpc.Call("privacy.GetPrivacyTxByAddr", params, &res)
return err
}
......
......@@ -44,7 +44,7 @@ func (m *PrivacyAction) Reset() { *m = PrivacyAction{} }
func (m *PrivacyAction) String() string { return proto.CompactTextString(m) }
func (*PrivacyAction) ProtoMessage() {}
func (*PrivacyAction) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{0}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{0}
}
func (m *PrivacyAction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrivacyAction.Unmarshal(m, b)
......@@ -229,7 +229,7 @@ func (m *Public2Privacy) Reset() { *m = Public2Privacy{} }
func (m *Public2Privacy) String() string { return proto.CompactTextString(m) }
func (*Public2Privacy) ProtoMessage() {}
func (*Public2Privacy) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{1}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{1}
}
func (m *Public2Privacy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Public2Privacy.Unmarshal(m, b)
......@@ -300,7 +300,7 @@ func (m *Privacy2Privacy) Reset() { *m = Privacy2Privacy{} }
func (m *Privacy2Privacy) String() string { return proto.CompactTextString(m) }
func (*Privacy2Privacy) ProtoMessage() {}
func (*Privacy2Privacy) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{2}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{2}
}
func (m *Privacy2Privacy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Privacy2Privacy.Unmarshal(m, b)
......@@ -379,7 +379,7 @@ func (m *Privacy2Public) Reset() { *m = Privacy2Public{} }
func (m *Privacy2Public) String() string { return proto.CompactTextString(m) }
func (*Privacy2Public) ProtoMessage() {}
func (*Privacy2Public) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{3}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{3}
}
func (m *Privacy2Public) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Privacy2Public.Unmarshal(m, b)
......@@ -462,7 +462,7 @@ func (m *UTXOGlobalIndex) Reset() { *m = UTXOGlobalIndex{} }
func (m *UTXOGlobalIndex) String() string { return proto.CompactTextString(m) }
func (*UTXOGlobalIndex) ProtoMessage() {}
func (*UTXOGlobalIndex) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{4}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{4}
}
func (m *UTXOGlobalIndex) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXOGlobalIndex.Unmarshal(m, b)
......@@ -510,7 +510,7 @@ func (m *KeyInput) Reset() { *m = KeyInput{} }
func (m *KeyInput) String() string { return proto.CompactTextString(m) }
func (*KeyInput) ProtoMessage() {}
func (*KeyInput) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{5}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{5}
}
func (m *KeyInput) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KeyInput.Unmarshal(m, b)
......@@ -562,7 +562,7 @@ func (m *PrivacyInput) Reset() { *m = PrivacyInput{} }
func (m *PrivacyInput) String() string { return proto.CompactTextString(m) }
func (*PrivacyInput) ProtoMessage() {}
func (*PrivacyInput) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{6}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{6}
}
func (m *PrivacyInput) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrivacyInput.Unmarshal(m, b)
......@@ -602,7 +602,7 @@ func (m *KeyOutput) Reset() { *m = KeyOutput{} }
func (m *KeyOutput) String() string { return proto.CompactTextString(m) }
func (*KeyOutput) ProtoMessage() {}
func (*KeyOutput) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{7}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{7}
}
func (m *KeyOutput) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KeyOutput.Unmarshal(m, b)
......@@ -648,7 +648,7 @@ func (m *PrivacyOutput) Reset() { *m = PrivacyOutput{} }
func (m *PrivacyOutput) String() string { return proto.CompactTextString(m) }
func (*PrivacyOutput) ProtoMessage() {}
func (*PrivacyOutput) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{8}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{8}
}
func (m *PrivacyOutput) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrivacyOutput.Unmarshal(m, b)
......@@ -694,7 +694,7 @@ func (m *GroupUTXOGlobalIndex) Reset() { *m = GroupUTXOGlobalIndex{} }
func (m *GroupUTXOGlobalIndex) String() string { return proto.CompactTextString(m) }
func (*GroupUTXOGlobalIndex) ProtoMessage() {}
func (*GroupUTXOGlobalIndex) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{9}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{9}
}
func (m *GroupUTXOGlobalIndex) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupUTXOGlobalIndex.Unmarshal(m, b)
......@@ -743,7 +743,7 @@ func (m *LocalUTXOItem) Reset() { *m = LocalUTXOItem{} }
func (m *LocalUTXOItem) String() string { return proto.CompactTextString(m) }
func (*LocalUTXOItem) ProtoMessage() {}
func (*LocalUTXOItem) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{10}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{10}
}
func (m *LocalUTXOItem) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LocalUTXOItem.Unmarshal(m, b)
......@@ -810,7 +810,7 @@ func (m *ReqUTXOPubKeys) Reset() { *m = ReqUTXOPubKeys{} }
func (m *ReqUTXOPubKeys) String() string { return proto.CompactTextString(m) }
func (*ReqUTXOPubKeys) ProtoMessage() {}
func (*ReqUTXOPubKeys) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{11}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{11}
}
func (m *ReqUTXOPubKeys) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqUTXOPubKeys.Unmarshal(m, b)
......@@ -856,7 +856,7 @@ func (m *PublicKeyData) Reset() { *m = PublicKeyData{} }
func (m *PublicKeyData) String() string { return proto.CompactTextString(m) }
func (*PublicKeyData) ProtoMessage() {}
func (*PublicKeyData) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{12}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{12}
}
func (m *PublicKeyData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PublicKeyData.Unmarshal(m, b)
......@@ -896,7 +896,7 @@ func (m *GroupUTXOPubKey) Reset() { *m = GroupUTXOPubKey{} }
func (m *GroupUTXOPubKey) String() string { return proto.CompactTextString(m) }
func (*GroupUTXOPubKey) ProtoMessage() {}
func (*GroupUTXOPubKey) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{13}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{13}
}
func (m *GroupUTXOPubKey) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupUTXOPubKey.Unmarshal(m, b)
......@@ -941,7 +941,7 @@ func (m *ResUTXOPubKeys) Reset() { *m = ResUTXOPubKeys{} }
func (m *ResUTXOPubKeys) String() string { return proto.CompactTextString(m) }
func (*ResUTXOPubKeys) ProtoMessage() {}
func (*ResUTXOPubKeys) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{14}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{14}
}
func (m *ResUTXOPubKeys) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResUTXOPubKeys.Unmarshal(m, b)
......@@ -980,7 +980,7 @@ func (m *ReqPrivacyToken) Reset() { *m = ReqPrivacyToken{} }
func (m *ReqPrivacyToken) String() string { return proto.CompactTextString(m) }
func (*ReqPrivacyToken) ProtoMessage() {}
func (*ReqPrivacyToken) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{15}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{15}
}
func (m *ReqPrivacyToken) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqPrivacyToken.Unmarshal(m, b)
......@@ -1026,7 +1026,7 @@ func (m *AmountDetail) Reset() { *m = AmountDetail{} }
func (m *AmountDetail) String() string { return proto.CompactTextString(m) }
func (*AmountDetail) ProtoMessage() {}
func (*AmountDetail) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{16}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{16}
}
func (m *AmountDetail) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AmountDetail.Unmarshal(m, b)
......@@ -1071,7 +1071,7 @@ func (m *ReplyPrivacyAmounts) Reset() { *m = ReplyPrivacyAmounts{} }
func (m *ReplyPrivacyAmounts) String() string { return proto.CompactTextString(m) }
func (*ReplyPrivacyAmounts) ProtoMessage() {}
func (*ReplyPrivacyAmounts) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{17}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{17}
}
func (m *ReplyPrivacyAmounts) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyPrivacyAmounts.Unmarshal(m, b)
......@@ -1109,7 +1109,7 @@ func (m *ReplyUTXOsOfAmount) Reset() { *m = ReplyUTXOsOfAmount{} }
func (m *ReplyUTXOsOfAmount) String() string { return proto.CompactTextString(m) }
func (*ReplyUTXOsOfAmount) ProtoMessage() {}
func (*ReplyUTXOsOfAmount) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{18}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{18}
}
func (m *ReplyUTXOsOfAmount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyUTXOsOfAmount.Unmarshal(m, b)
......@@ -1148,7 +1148,7 @@ func (m *ReceiptPrivacyOutput) Reset() { *m = ReceiptPrivacyOutput{} }
func (m *ReceiptPrivacyOutput) String() string { return proto.CompactTextString(m) }
func (*ReceiptPrivacyOutput) ProtoMessage() {}
func (*ReceiptPrivacyOutput) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{19}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{19}
}
func (m *ReceiptPrivacyOutput) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptPrivacyOutput.Unmarshal(m, b)
......@@ -1194,7 +1194,7 @@ func (m *AmountsOfUTXO) Reset() { *m = AmountsOfUTXO{} }
func (m *AmountsOfUTXO) String() string { return proto.CompactTextString(m) }
func (*AmountsOfUTXO) ProtoMessage() {}
func (*AmountsOfUTXO) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{20}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{20}
}
func (m *AmountsOfUTXO) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AmountsOfUTXO.Unmarshal(m, b)
......@@ -1232,7 +1232,7 @@ func (m *TokenNamesOfUTXO) Reset() { *m = TokenNamesOfUTXO{} }
func (m *TokenNamesOfUTXO) String() string { return proto.CompactTextString(m) }
func (*TokenNamesOfUTXO) ProtoMessage() {}
func (*TokenNamesOfUTXO) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{21}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{21}
}
func (m *TokenNamesOfUTXO) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TokenNamesOfUTXO.Unmarshal(m, b)
......@@ -1272,7 +1272,7 @@ func (m *UTXOGlobalIndex4Print) Reset() { *m = UTXOGlobalIndex4Print{} }
func (m *UTXOGlobalIndex4Print) String() string { return proto.CompactTextString(m) }
func (*UTXOGlobalIndex4Print) ProtoMessage() {}
func (*UTXOGlobalIndex4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{22}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{22}
}
func (m *UTXOGlobalIndex4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXOGlobalIndex4Print.Unmarshal(m, b)
......@@ -1319,7 +1319,7 @@ func (m *KeyInput4Print) Reset() { *m = KeyInput4Print{} }
func (m *KeyInput4Print) String() string { return proto.CompactTextString(m) }
func (*KeyInput4Print) ProtoMessage() {}
func (*KeyInput4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{23}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{23}
}
func (m *KeyInput4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KeyInput4Print.Unmarshal(m, b)
......@@ -1372,7 +1372,7 @@ func (m *KeyOutput4Print) Reset() { *m = KeyOutput4Print{} }
func (m *KeyOutput4Print) String() string { return proto.CompactTextString(m) }
func (*KeyOutput4Print) ProtoMessage() {}
func (*KeyOutput4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{24}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{24}
}
func (m *KeyOutput4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KeyOutput4Print.Unmarshal(m, b)
......@@ -1417,7 +1417,7 @@ func (m *PrivacyInput4Print) Reset() { *m = PrivacyInput4Print{} }
func (m *PrivacyInput4Print) String() string { return proto.CompactTextString(m) }
func (*PrivacyInput4Print) ProtoMessage() {}
func (*PrivacyInput4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{25}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{25}
}
func (m *PrivacyInput4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrivacyInput4Print.Unmarshal(m, b)
......@@ -1456,7 +1456,7 @@ func (m *PrivacyOutput4Print) Reset() { *m = PrivacyOutput4Print{} }
func (m *PrivacyOutput4Print) String() string { return proto.CompactTextString(m) }
func (*PrivacyOutput4Print) ProtoMessage() {}
func (*PrivacyOutput4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{26}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{26}
}
func (m *PrivacyOutput4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrivacyOutput4Print.Unmarshal(m, b)
......@@ -1504,7 +1504,7 @@ func (m *Public2Privacy4Print) Reset() { *m = Public2Privacy4Print{} }
func (m *Public2Privacy4Print) String() string { return proto.CompactTextString(m) }
func (*Public2Privacy4Print) ProtoMessage() {}
func (*Public2Privacy4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{27}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{27}
}
func (m *Public2Privacy4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Public2Privacy4Print.Unmarshal(m, b)
......@@ -1567,7 +1567,7 @@ func (m *Privacy2Privacy4Print) Reset() { *m = Privacy2Privacy4Print{} }
func (m *Privacy2Privacy4Print) String() string { return proto.CompactTextString(m) }
func (*Privacy2Privacy4Print) ProtoMessage() {}
func (*Privacy2Privacy4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{28}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{28}
}
func (m *Privacy2Privacy4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Privacy2Privacy4Print.Unmarshal(m, b)
......@@ -1637,7 +1637,7 @@ func (m *Privacy2Public4Print) Reset() { *m = Privacy2Public4Print{} }
func (m *Privacy2Public4Print) String() string { return proto.CompactTextString(m) }
func (*Privacy2Public4Print) ProtoMessage() {}
func (*Privacy2Public4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{29}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{29}
}
func (m *Privacy2Public4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Privacy2Public4Print.Unmarshal(m, b)
......@@ -1708,7 +1708,7 @@ func (m *PrivacyAction4Print) Reset() { *m = PrivacyAction4Print{} }
func (m *PrivacyAction4Print) String() string { return proto.CompactTextString(m) }
func (*PrivacyAction4Print) ProtoMessage() {}
func (*PrivacyAction4Print) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{30}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{30}
}
func (m *PrivacyAction4Print) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrivacyAction4Print.Unmarshal(m, b)
......@@ -1878,94 +1878,6 @@ func _PrivacyAction4Print_OneofSizer(msg proto.Message) (n int) {
return n
}
type ReqCreateUTXOs struct {
// string viewPublic = 1; //接收人可见公钥A
// string spendPublic = 2; //接收人花费公钥B
Tokenname string `protobuf:"bytes,3,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
Amount int64 `protobuf:"varint,4,opt,name=amount,proto3" json:"amount,omitempty"`
Note string `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"`
Sender string `protobuf:"bytes,6,opt,name=sender,proto3" json:"sender,omitempty"`
Pubkeypair string `protobuf:"bytes,8,opt,name=pubkeypair,proto3" json:"pubkeypair,omitempty"`
Expire int64 `protobuf:"varint,9,opt,name=expire,proto3" json:"expire,omitempty"`
AssetExec string `protobuf:"bytes,10,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ReqCreateUTXOs) Reset() { *m = ReqCreateUTXOs{} }
func (m *ReqCreateUTXOs) String() string { return proto.CompactTextString(m) }
func (*ReqCreateUTXOs) ProtoMessage() {}
func (*ReqCreateUTXOs) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{31}
}
func (m *ReqCreateUTXOs) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqCreateUTXOs.Unmarshal(m, b)
}
func (m *ReqCreateUTXOs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqCreateUTXOs.Marshal(b, m, deterministic)
}
func (dst *ReqCreateUTXOs) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqCreateUTXOs.Merge(dst, src)
}
func (m *ReqCreateUTXOs) XXX_Size() int {
return xxx_messageInfo_ReqCreateUTXOs.Size(m)
}
func (m *ReqCreateUTXOs) XXX_DiscardUnknown() {
xxx_messageInfo_ReqCreateUTXOs.DiscardUnknown(m)
}
var xxx_messageInfo_ReqCreateUTXOs proto.InternalMessageInfo
func (m *ReqCreateUTXOs) GetTokenname() string {
if m != nil {
return m.Tokenname
}
return ""
}
func (m *ReqCreateUTXOs) GetAmount() int64 {
if m != nil {
return m.Amount
}
return 0
}
func (m *ReqCreateUTXOs) GetNote() string {
if m != nil {
return m.Note
}
return ""
}
func (m *ReqCreateUTXOs) GetSender() string {
if m != nil {
return m.Sender
}
return ""
}
func (m *ReqCreateUTXOs) GetPubkeypair() string {
if m != nil {
return m.Pubkeypair
}
return ""
}
func (m *ReqCreateUTXOs) GetExpire() int64 {
if m != nil {
return m.Expire
}
return 0
}
func (m *ReqCreateUTXOs) GetAssetExec() string {
if m != nil {
return m.AssetExec
}
return ""
}
type ReplyPrivacyPkPair struct {
ShowSuccessful bool `protobuf:"varint,1,opt,name=showSuccessful,proto3" json:"showSuccessful,omitempty"`
// string viewPub = 2;
......@@ -1980,7 +1892,7 @@ func (m *ReplyPrivacyPkPair) Reset() { *m = ReplyPrivacyPkPair{} }
func (m *ReplyPrivacyPkPair) String() string { return proto.CompactTextString(m) }
func (*ReplyPrivacyPkPair) ProtoMessage() {}
func (*ReplyPrivacyPkPair) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{32}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{31}
}
func (m *ReplyPrivacyPkPair) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyPrivacyPkPair.Unmarshal(m, b)
......@@ -2026,7 +1938,7 @@ func (m *ReqPrivBal4AddrToken) Reset() { *m = ReqPrivBal4AddrToken{} }
func (m *ReqPrivBal4AddrToken) String() string { return proto.CompactTextString(m) }
func (*ReqPrivBal4AddrToken) ProtoMessage() {}
func (*ReqPrivBal4AddrToken) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{33}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{32}
}
func (m *ReqPrivBal4AddrToken) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqPrivBal4AddrToken.Unmarshal(m, b)
......@@ -2072,7 +1984,7 @@ func (m *ReplyPrivacyBalance) Reset() { *m = ReplyPrivacyBalance{} }
func (m *ReplyPrivacyBalance) String() string { return proto.CompactTextString(m) }
func (*ReplyPrivacyBalance) ProtoMessage() {}
func (*ReplyPrivacyBalance) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{34}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{33}
}
func (m *ReplyPrivacyBalance) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyPrivacyBalance.Unmarshal(m, b)
......@@ -2126,7 +2038,7 @@ func (m *PrivacyDBStore) Reset() { *m = PrivacyDBStore{} }
func (m *PrivacyDBStore) String() string { return proto.CompactTextString(m) }
func (*PrivacyDBStore) ProtoMessage() {}
func (*PrivacyDBStore) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{35}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{34}
}
func (m *PrivacyDBStore) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrivacyDBStore.Unmarshal(m, b)
......@@ -2228,7 +2140,7 @@ func (m *UTXO) Reset() { *m = UTXO{} }
func (m *UTXO) String() string { return proto.CompactTextString(m) }
func (*UTXO) ProtoMessage() {}
func (*UTXO) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{36}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{35}
}
func (m *UTXO) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXO.Unmarshal(m, b)
......@@ -2275,7 +2187,7 @@ func (m *UTXOHaveTxHash) Reset() { *m = UTXOHaveTxHash{} }
func (m *UTXOHaveTxHash) String() string { return proto.CompactTextString(m) }
func (*UTXOHaveTxHash) ProtoMessage() {}
func (*UTXOHaveTxHash) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{37}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{36}
}
func (m *UTXOHaveTxHash) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXOHaveTxHash.Unmarshal(m, b)
......@@ -2327,7 +2239,7 @@ func (m *UTXOs) Reset() { *m = UTXOs{} }
func (m *UTXOs) String() string { return proto.CompactTextString(m) }
func (*UTXOs) ProtoMessage() {}
func (*UTXOs) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{38}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{37}
}
func (m *UTXOs) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXOs.Unmarshal(m, b)
......@@ -2365,7 +2277,7 @@ func (m *UTXOHaveTxHashs) Reset() { *m = UTXOHaveTxHashs{} }
func (m *UTXOHaveTxHashs) String() string { return proto.CompactTextString(m) }
func (*UTXOHaveTxHashs) ProtoMessage() {}
func (*UTXOHaveTxHashs) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{39}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{38}
}
func (m *UTXOHaveTxHashs) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXOHaveTxHashs.Unmarshal(m, b)
......@@ -2405,7 +2317,7 @@ func (m *ReqUTXOGlobalIndex) Reset() { *m = ReqUTXOGlobalIndex{} }
func (m *ReqUTXOGlobalIndex) String() string { return proto.CompactTextString(m) }
func (*ReqUTXOGlobalIndex) ProtoMessage() {}
func (*ReqUTXOGlobalIndex) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{40}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{39}
}
func (m *ReqUTXOGlobalIndex) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqUTXOGlobalIndex.Unmarshal(m, b)
......@@ -2458,7 +2370,7 @@ func (m *UTXOBasic) Reset() { *m = UTXOBasic{} }
func (m *UTXOBasic) String() string { return proto.CompactTextString(m) }
func (*UTXOBasic) ProtoMessage() {}
func (*UTXOBasic) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{41}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{40}
}
func (m *UTXOBasic) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXOBasic.Unmarshal(m, b)
......@@ -2504,7 +2416,7 @@ func (m *UTXOIndex4Amount) Reset() { *m = UTXOIndex4Amount{} }
func (m *UTXOIndex4Amount) String() string { return proto.CompactTextString(m) }
func (*UTXOIndex4Amount) ProtoMessage() {}
func (*UTXOIndex4Amount) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{42}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{41}
}
func (m *UTXOIndex4Amount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXOIndex4Amount.Unmarshal(m, b)
......@@ -2551,7 +2463,7 @@ func (m *ResUTXOGlobalIndex) Reset() { *m = ResUTXOGlobalIndex{} }
func (m *ResUTXOGlobalIndex) String() string { return proto.CompactTextString(m) }
func (*ResUTXOGlobalIndex) ProtoMessage() {}
func (*ResUTXOGlobalIndex) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{43}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{42}
}
func (m *ResUTXOGlobalIndex) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResUTXOGlobalIndex.Unmarshal(m, b)
......@@ -2608,7 +2520,7 @@ func (m *FTXOsSTXOsInOneTx) Reset() { *m = FTXOsSTXOsInOneTx{} }
func (m *FTXOsSTXOsInOneTx) String() string { return proto.CompactTextString(m) }
func (*FTXOsSTXOsInOneTx) ProtoMessage() {}
func (*FTXOsSTXOsInOneTx) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{44}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{43}
}
func (m *FTXOsSTXOsInOneTx) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FTXOsSTXOsInOneTx.Unmarshal(m, b)
......@@ -2675,7 +2587,7 @@ func (m *RealKeyInput) Reset() { *m = RealKeyInput{} }
func (m *RealKeyInput) String() string { return proto.CompactTextString(m) }
func (*RealKeyInput) ProtoMessage() {}
func (*RealKeyInput) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{45}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{44}
}
func (m *RealKeyInput) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RealKeyInput.Unmarshal(m, b)
......@@ -2720,7 +2632,7 @@ func (m *UTXOBasics) Reset() { *m = UTXOBasics{} }
func (m *UTXOBasics) String() string { return proto.CompactTextString(m) }
func (*UTXOBasics) ProtoMessage() {}
func (*UTXOBasics) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{46}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{45}
}
func (m *UTXOBasics) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UTXOBasics.Unmarshal(m, b)
......@@ -2772,7 +2684,7 @@ func (m *CreateTransactionCache) Reset() { *m = CreateTransactionCache{}
func (m *CreateTransactionCache) String() string { return proto.CompactTextString(m) }
func (*CreateTransactionCache) ProtoMessage() {}
func (*CreateTransactionCache) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{47}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{46}
}
func (m *CreateTransactionCache) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateTransactionCache.Unmarshal(m, b)
......@@ -2867,7 +2779,7 @@ func (m *ReqCacheTxList) Reset() { *m = ReqCacheTxList{} }
func (m *ReqCacheTxList) String() string { return proto.CompactTextString(m) }
func (*ReqCacheTxList) ProtoMessage() {}
func (*ReqCacheTxList) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{48}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{47}
}
func (m *ReqCacheTxList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqCacheTxList.Unmarshal(m, b)
......@@ -2912,7 +2824,7 @@ func (m *ReplyCacheTxList) Reset() { *m = ReplyCacheTxList{} }
func (m *ReplyCacheTxList) String() string { return proto.CompactTextString(m) }
func (*ReplyCacheTxList) ProtoMessage() {}
func (*ReplyCacheTxList) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{49}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{48}
}
func (m *ReplyCacheTxList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyCacheTxList.Unmarshal(m, b)
......@@ -2951,7 +2863,7 @@ func (m *ReqPrivacyAccount) Reset() { *m = ReqPrivacyAccount{} }
func (m *ReqPrivacyAccount) String() string { return proto.CompactTextString(m) }
func (*ReqPrivacyAccount) ProtoMessage() {}
func (*ReqPrivacyAccount) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{50}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{49}
}
func (m *ReqPrivacyAccount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqPrivacyAccount.Unmarshal(m, b)
......@@ -3003,7 +2915,7 @@ func (m *ReqPPrivacyAccount) Reset() { *m = ReqPPrivacyAccount{} }
func (m *ReqPPrivacyAccount) String() string { return proto.CompactTextString(m) }
func (*ReqPPrivacyAccount) ProtoMessage() {}
func (*ReqPPrivacyAccount) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{51}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{50}
}
func (m *ReqPPrivacyAccount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqPPrivacyAccount.Unmarshal(m, b)
......@@ -3060,7 +2972,7 @@ func (m *ReplyPrivacyAccount) Reset() { *m = ReplyPrivacyAccount{} }
func (m *ReplyPrivacyAccount) String() string { return proto.CompactTextString(m) }
func (*ReplyPrivacyAccount) ProtoMessage() {}
func (*ReplyPrivacyAccount) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{52}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{51}
}
func (m *ReplyPrivacyAccount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplyPrivacyAccount.Unmarshal(m, b)
......@@ -3113,7 +3025,7 @@ func (m *ReqCreateCacheTxKey) Reset() { *m = ReqCreateCacheTxKey{} }
func (m *ReqCreateCacheTxKey) String() string { return proto.CompactTextString(m) }
func (*ReqCreateCacheTxKey) ProtoMessage() {}
func (*ReqCreateCacheTxKey) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{53}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{52}
}
func (m *ReqCreateCacheTxKey) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqCreateCacheTxKey.Unmarshal(m, b)
......@@ -3167,7 +3079,7 @@ func (m *ReqPrivacyTransactionList) Reset() { *m = ReqPrivacyTransaction
func (m *ReqPrivacyTransactionList) String() string { return proto.CompactTextString(m) }
func (*ReqPrivacyTransactionList) ProtoMessage() {}
func (*ReqPrivacyTransactionList) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{54}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{53}
}
func (m *ReqPrivacyTransactionList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqPrivacyTransactionList.Unmarshal(m, b)
......@@ -3248,7 +3160,7 @@ func (m *ReqRescanUtxos) Reset() { *m = ReqRescanUtxos{} }
func (m *ReqRescanUtxos) String() string { return proto.CompactTextString(m) }
func (*ReqRescanUtxos) ProtoMessage() {}
func (*ReqRescanUtxos) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{55}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{54}
}
func (m *ReqRescanUtxos) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqRescanUtxos.Unmarshal(m, b)
......@@ -3294,7 +3206,7 @@ func (m *RepRescanResult) Reset() { *m = RepRescanResult{} }
func (m *RepRescanResult) String() string { return proto.CompactTextString(m) }
func (*RepRescanResult) ProtoMessage() {}
func (*RepRescanResult) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{56}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{55}
}
func (m *RepRescanResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RepRescanResult.Unmarshal(m, b)
......@@ -3340,7 +3252,7 @@ func (m *RepRescanUtxos) Reset() { *m = RepRescanUtxos{} }
func (m *RepRescanUtxos) String() string { return proto.CompactTextString(m) }
func (*RepRescanUtxos) ProtoMessage() {}
func (*RepRescanUtxos) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{57}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{56}
}
func (m *RepRescanUtxos) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RepRescanUtxos.Unmarshal(m, b)
......@@ -3385,7 +3297,7 @@ func (m *ReqEnablePrivacy) Reset() { *m = ReqEnablePrivacy{} }
func (m *ReqEnablePrivacy) String() string { return proto.CompactTextString(m) }
func (*ReqEnablePrivacy) ProtoMessage() {}
func (*ReqEnablePrivacy) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{58}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{57}
}
func (m *ReqEnablePrivacy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqEnablePrivacy.Unmarshal(m, b)
......@@ -3425,7 +3337,7 @@ func (m *PriAddrResult) Reset() { *m = PriAddrResult{} }
func (m *PriAddrResult) String() string { return proto.CompactTextString(m) }
func (*PriAddrResult) ProtoMessage() {}
func (*PriAddrResult) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{59}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{58}
}
func (m *PriAddrResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PriAddrResult.Unmarshal(m, b)
......@@ -3477,7 +3389,7 @@ func (m *RepEnablePrivacy) Reset() { *m = RepEnablePrivacy{} }
func (m *RepEnablePrivacy) String() string { return proto.CompactTextString(m) }
func (*RepEnablePrivacy) ProtoMessage() {}
func (*RepEnablePrivacy) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{60}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{59}
}
func (m *RepEnablePrivacy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RepEnablePrivacy.Unmarshal(m, b)
......@@ -3518,7 +3430,7 @@ func (m *PrivacySignatureParam) Reset() { *m = PrivacySignatureParam{} }
func (m *PrivacySignatureParam) String() string { return proto.CompactTextString(m) }
func (*PrivacySignatureParam) ProtoMessage() {}
func (*PrivacySignatureParam) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{61}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{60}
}
func (m *PrivacySignatureParam) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrivacySignatureParam.Unmarshal(m, b)
......@@ -3573,7 +3485,7 @@ func (m *WalletAccountPrivacy) Reset() { *m = WalletAccountPrivacy{} }
func (m *WalletAccountPrivacy) String() string { return proto.CompactTextString(m) }
func (*WalletAccountPrivacy) ProtoMessage() {}
func (*WalletAccountPrivacy) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{62}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{61}
}
func (m *WalletAccountPrivacy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WalletAccountPrivacy.Unmarshal(m, b)
......@@ -3649,7 +3561,7 @@ func (m *ReqCreatePrivacyTx) Reset() { *m = ReqCreatePrivacyTx{} }
func (m *ReqCreatePrivacyTx) String() string { return proto.CompactTextString(m) }
func (*ReqCreatePrivacyTx) ProtoMessage() {}
func (*ReqCreatePrivacyTx) Descriptor() ([]byte, []int) {
return fileDescriptor_privacy_5bbb0d865ebb40dc, []int{63}
return fileDescriptor_privacy_3d5bdcf849039d2c, []int{62}
}
func (m *ReqCreatePrivacyTx) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqCreatePrivacyTx.Unmarshal(m, b)
......@@ -3773,7 +3685,6 @@ func init() {
proto.RegisterType((*Privacy2Privacy4Print)(nil), "types.Privacy2Privacy4Print")
proto.RegisterType((*Privacy2Public4Print)(nil), "types.Privacy2Public4Print")
proto.RegisterType((*PrivacyAction4Print)(nil), "types.PrivacyAction4Print")
proto.RegisterType((*ReqCreateUTXOs)(nil), "types.ReqCreateUTXOs")
proto.RegisterType((*ReplyPrivacyPkPair)(nil), "types.ReplyPrivacyPkPair")
proto.RegisterType((*ReqPrivBal4AddrToken)(nil), "types.ReqPrivBal4AddrToken")
proto.RegisterType((*ReplyPrivacyBalance)(nil), "types.ReplyPrivacyBalance")
......@@ -3823,8 +3734,6 @@ type PrivacyClient interface {
// Privacy Trading
// 显示指定地址的公钥对信息,可以作为后续交易参数
ShowPrivacyKey(ctx context.Context, in *types.ReqString, opts ...grpc.CallOption) (*ReplyPrivacyPkPair, error)
// 创建一系列UTXO
CreateUTXOs(ctx context.Context, in *ReqCreateUTXOs, opts ...grpc.CallOption) (*types.Reply, error)
// 扫描UTXO以及获取扫描UTXO后的状态
RescanUtxos(ctx context.Context, in *ReqRescanUtxos, opts ...grpc.CallOption) (*RepRescanUtxos, error)
// 使能隐私账户
......@@ -3850,15 +3759,6 @@ func (c *privacyClient) ShowPrivacyKey(ctx context.Context, in *types.ReqString,
return out, nil
}
func (c *privacyClient) CreateUTXOs(ctx context.Context, in *ReqCreateUTXOs, opts ...grpc.CallOption) (*types.Reply, error) {
out := new(types.Reply)
err := c.cc.Invoke(ctx, "/types.privacy/CreateUTXOs", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *privacyClient) RescanUtxos(ctx context.Context, in *ReqRescanUtxos, opts ...grpc.CallOption) (*RepRescanUtxos, error) {
out := new(RepRescanUtxos)
err := c.cc.Invoke(ctx, "/types.privacy/RescanUtxos", in, out, opts...)
......@@ -3891,8 +3791,6 @@ type PrivacyServer interface {
// Privacy Trading
// 显示指定地址的公钥对信息,可以作为后续交易参数
ShowPrivacyKey(context.Context, *types.ReqString) (*ReplyPrivacyPkPair, error)
// 创建一系列UTXO
CreateUTXOs(context.Context, *ReqCreateUTXOs) (*types.Reply, error)
// 扫描UTXO以及获取扫描UTXO后的状态
RescanUtxos(context.Context, *ReqRescanUtxos) (*RepRescanUtxos, error)
// 使能隐私账户
......@@ -3923,24 +3821,6 @@ func _Privacy_ShowPrivacyKey_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler)
}
func _Privacy_CreateUTXOs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReqCreateUTXOs)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PrivacyServer).CreateUTXOs(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/types.privacy/CreateUTXOs",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PrivacyServer).CreateUTXOs(ctx, req.(*ReqCreateUTXOs))
}
return interceptor(ctx, in, info, handler)
}
func _Privacy_RescanUtxos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReqRescanUtxos)
if err := dec(in); err != nil {
......@@ -4004,10 +3884,6 @@ var _Privacy_serviceDesc = grpc.ServiceDesc{
Handler: _Privacy_ShowPrivacyKey_Handler,
},
{
MethodName: "CreateUTXOs",
Handler: _Privacy_CreateUTXOs_Handler,
},
{
MethodName: "RescanUtxos",
Handler: _Privacy_RescanUtxos_Handler,
},
......@@ -4024,155 +3900,152 @@ var _Privacy_serviceDesc = grpc.ServiceDesc{
Metadata: "privacy.proto",
}
func init() { proto.RegisterFile("privacy.proto", fileDescriptor_privacy_5bbb0d865ebb40dc) }
func init() { proto.RegisterFile("privacy.proto", fileDescriptor_privacy_3d5bdcf849039d2c) }
var fileDescriptor_privacy_5bbb0d865ebb40dc = []byte{
// 2347 bytes of a gzipped FileDescriptorProto
var fileDescriptor_privacy_3d5bdcf849039d2c = []byte{
// 2296 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x19, 0x4b, 0x6f, 0x1c, 0x49,
0xd9, 0x3d, 0x0f, 0xdb, 0xf3, 0x79, 0x6c, 0x4f, 0x3a, 0x63, 0xef, 0x64, 0x12, 0x45, 0xa1, 0x76,
0x15, 0xc2, 0x82, 0x8c, 0x36, 0x58, 0xda, 0x07, 0x41, 0x59, 0x8f, 0xe3, 0x24, 0x96, 0x37, 0xb1,
0x29, 0x7b, 0x05, 0x42, 0x8b, 0x44, 0xb9, 0xa7, 0x3c, 0x6e, 0xb9, 0xa7, 0xbb, 0xdd, 0xdd, 0x63,
0xcf, 0x9c, 0x96, 0x13, 0xe2, 0xc0, 0x01, 0x09, 0xc4, 0x05, 0xc4, 0x0d, 0xce, 0xfc, 0x09, 0x10,
0x07, 0xb8, 0xf0, 0x07, 0x10, 0x7f, 0x80, 0xdf, 0x80, 0xea, 0xd1, 0x5d, 0x8f, 0xe9, 0xb1, 0x13,
0xd6, 0x7b, 0x19, 0x75, 0x7d, 0xf5, 0xd5, 0x57, 0xdf, 0xfb, 0x51, 0x03, 0xcb, 0x71, 0xe2, 0x5f,
0x10, 0x6f, 0xb2, 0x11, 0x27, 0x51, 0x16, 0xb9, 0xf5, 0x6c, 0x12, 0xd3, 0xb4, 0xdb, 0xf4, 0xa2,
0xe1, 0x30, 0x0a, 0x05, 0xb0, 0x7b, 0x2b, 0x4b, 0x48, 0x98, 0x12, 0x2f, 0xf3, 0x73, 0x10, 0xfa,
0xaf, 0x03, 0xcb, 0x07, 0xe2, 0xe4, 0x16, 0x87, 0xbb, 0x4f, 0x61, 0x25, 0x1e, 0x1d, 0x07, 0xbe,
0xf7, 0x58, 0x52, 0xec, 0x38, 0x0f, 0x9c, 0x47, 0x4b, 0x8f, 0xd7, 0x36, 0x38, 0xc9, 0x8d, 0x03,
0xb1, 0x29, 0x0f, 0xbd, 0x9c, 0xc3, 0x16, 0xba, 0xdb, 0x83, 0x55, 0xf9, 0x59, 0x50, 0xa8, 0x70,
0x0a, 0xeb, 0x39, 0x05, 0xb9, 0xab, 0x48, 0xd8, 0x07, 0x38, 0x13, 0x39, 0x88, 0x53, 0xef, 0x54,
0x4d, 0x26, 0x72, 0x12, 0x7c, 0x93, 0x33, 0x61, 0xa0, 0xbb, 0x2b, 0x50, 0xc9, 0x26, 0x9d, 0xda,
0x03, 0xe7, 0x51, 0x1d, 0x57, 0xb2, 0x49, 0x6f, 0x01, 0xea, 0x17, 0x24, 0x18, 0x51, 0xf4, 0x67,
0x07, 0x56, 0x4c, 0x11, 0xdc, 0x7b, 0xd0, 0xc8, 0xa2, 0x33, 0x1a, 0x86, 0x64, 0x48, 0xb9, 0xb0,
0x0d, 0xac, 0x00, 0xee, 0x3a, 0xcc, 0x93, 0x61, 0x34, 0x0a, 0x33, 0x2e, 0x45, 0x15, 0xcb, 0x95,
0xeb, 0x42, 0x2d, 0x8c, 0x32, 0xda, 0xa9, 0xf3, 0x03, 0xfc, 0xdb, 0xfd, 0x0e, 0xcc, 0x47, 0xa3,
0x2c, 0x1e, 0x65, 0x9d, 0x05, 0xce, 0x6e, 0xdb, 0x64, 0x77, 0x9f, 0xef, 0x61, 0x89, 0xc3, 0xee,
0x25, 0x69, 0x4a, 0xb3, 0x9d, 0x31, 0xf5, 0x3a, 0x8b, 0xe2, 0xde, 0x02, 0x80, 0xfe, 0xe5, 0xc0,
0xaa, 0xa5, 0xa9, 0x1b, 0xe4, 0xf4, 0x5b, 0x50, 0xf7, 0x43, 0xc6, 0xe8, 0x3c, 0x67, 0xf4, 0xb6,
0xc9, 0xe8, 0x2e, 0xdb, 0xc2, 0x02, 0xe3, 0x46, 0x85, 0xfa, 0x0f, 0xd3, 0xbe, 0x61, 0xbb, 0xaf,
0x28, 0x53, 0x55, 0x93, 0x89, 0xd9, 0x3c, 0xe2, 0x02, 0x35, 0x70, 0x25, 0x8b, 0x94, 0x8c, 0xb5,
0xb7, 0x90, 0xb1, 0xfe, 0x95, 0x65, 0xdc, 0x81, 0xd5, 0xcf, 0x8f, 0x7e, 0xbc, 0xff, 0x22, 0x88,
0x8e, 0x49, 0xb0, 0x1b, 0xf6, 0xe9, 0x98, 0x49, 0x91, 0x8d, 0x4f, 0x49, 0x7a, 0xca, 0xf9, 0x6d,
0x62, 0xb9, 0x72, 0xbb, 0xb0, 0x18, 0x8d, 0x32, 0x9f, 0xe1, 0x48, 0x5f, 0x2d, 0xd6, 0xe8, 0xe7,
0x0e, 0x2c, 0xee, 0x51, 0xc1, 0xa6, 0xa6, 0x06, 0xc7, 0x50, 0xc3, 0xa7, 0xb0, 0x3a, 0xca, 0xc6,
0x91, 0x76, 0x57, 0xa7, 0xf2, 0xa0, 0xaa, 0xc5, 0x9a, 0xc5, 0x09, 0xb6, 0xd1, 0x19, 0x0b, 0x67,
0x74, 0xb2, 0x3b, 0x24, 0x03, 0x2a, 0x99, 0x2b, 0xd6, 0xe8, 0xfb, 0xd0, 0xd4, 0x95, 0xe5, 0x7e,
0x9b, 0xe3, 0x0a, 0x9d, 0x3a, 0xfc, 0x9a, 0x55, 0x79, 0x4d, 0xce, 0x28, 0x2e, 0x10, 0xd0, 0x2e,
0x34, 0xce, 0xa8, 0xd4, 0xdc, 0x4c, 0xfe, 0xdf, 0x83, 0xe5, 0x28, 0xa4, 0x99, 0x3f, 0xa4, 0xf1,
0xe8, 0xf8, 0x8c, 0x8a, 0x4c, 0xd1, 0xc4, 0x26, 0x10, 0xfd, 0xb4, 0xc8, 0x51, 0xfb, 0x85, 0x01,
0x70, 0x3c, 0x3a, 0xde, 0xa3, 0x93, 0x6c, 0xcc, 0x29, 0x36, 0xb1, 0x02, 0xb8, 0x1b, 0xfc, 0x66,
0x69, 0x4f, 0xa1, 0x8e, 0x96, 0xe4, 0xb3, 0xe0, 0x08, 0x2b, 0x14, 0x14, 0x43, 0xfb, 0x45, 0x12,
0x8d, 0xe2, 0x12, 0xab, 0x7d, 0x3d, 0x4a, 0x47, 0xbf, 0x77, 0x60, 0xf9, 0xb3, 0xc8, 0x23, 0x01,
0xc3, 0xdc, 0xcd, 0xe8, 0x90, 0xdd, 0x75, 0x4a, 0xfd, 0xc1, 0x69, 0x71, 0x97, 0x58, 0xb9, 0x1d,
0x58, 0xc8, 0xc6, 0xbe, 0xbc, 0x83, 0x39, 0x48, 0xbe, 0x34, 0x7c, 0xa7, 0x6a, 0xfa, 0x8e, 0xe6,
0x6f, 0x35, 0xc3, 0xdf, 0xa6, 0xd4, 0x5d, 0x2f, 0x53, 0xf7, 0x97, 0xb0, 0x82, 0xe9, 0x39, 0x63,
0xed, 0x80, 0xab, 0x34, 0x2d, 0x62, 0xf4, 0xb5, 0x1d, 0xa3, 0x0c, 0xe0, 0xee, 0x43, 0x7b, 0x50,
0xa2, 0x3f, 0xa9, 0x94, 0xbb, 0x52, 0x29, 0x65, 0x2a, 0xc6, 0xa5, 0x07, 0xd1, 0xbb, 0xb0, 0x2c,
0x92, 0xc3, 0x1e, 0x9d, 0x3c, 0x23, 0x19, 0x61, 0xd1, 0xde, 0x27, 0x19, 0xe1, 0x4e, 0xd7, 0xc4,
0xfc, 0x1b, 0x6d, 0xc1, 0x6a, 0x41, 0x52, 0xf0, 0x39, 0xd3, 0x60, 0xeb, 0x30, 0x5f, 0xb8, 0x17,
0x23, 0x20, 0x57, 0xe8, 0x88, 0x09, 0x9a, 0xea, 0x82, 0xf6, 0xa0, 0x35, 0x30, 0x89, 0xa6, 0xd2,
0xd3, 0xd7, 0x6d, 0x31, 0xc4, 0x36, 0x9e, 0xc2, 0x47, 0x4f, 0x61, 0x15, 0xd3, 0x73, 0xe9, 0xb0,
0x47, 0x4c, 0x4b, 0x6e, 0x1b, 0xea, 0x5c, 0x5d, 0x52, 0x77, 0x62, 0x31, 0x2b, 0xb7, 0xa1, 0x27,
0xd0, 0xdc, 0xe2, 0x5f, 0xcf, 0x68, 0x46, 0xfc, 0x60, 0xa6, 0x58, 0x6d, 0xa8, 0x7b, 0xda, 0x71,
0xb1, 0x40, 0xaf, 0xe1, 0x36, 0xa6, 0x71, 0x30, 0xc9, 0xab, 0x3a, 0xc7, 0x4d, 0xdd, 0x0f, 0xa1,
0x49, 0x34, 0xa2, 0x52, 0xaa, 0x3c, 0x27, 0xea, 0xf7, 0x61, 0x03, 0x11, 0x61, 0x70, 0x13, 0x46,
0x8f, 0x89, 0x98, 0xee, 0x9f, 0x08, 0x4c, 0xf7, 0x09, 0xac, 0x04, 0xba, 0x03, 0xe7, 0x6a, 0xca,
0x13, 0xa7, 0xe1, 0xdd, 0xd8, 0xc2, 0x45, 0x5f, 0x40, 0x1b, 0x53, 0x8f, 0xfa, 0x71, 0x66, 0xc6,
0x75, 0xb9, 0x9e, 0xde, 0x36, 0x9e, 0x7f, 0xed, 0xc0, 0xb2, 0x14, 0x7b, 0xff, 0x84, 0x5d, 0xea,
0x6e, 0x41, 0x43, 0xc8, 0xf4, 0x8a, 0xc4, 0x92, 0xd1, 0x77, 0x0d, 0xc9, 0x25, 0xa2, 0x5c, 0xbd,
0x22, 0xf1, 0x4e, 0x98, 0x25, 0x13, 0xac, 0x4e, 0x75, 0x9f, 0xc0, 0x8a, 0xb9, 0xe9, 0xb6, 0xa0,
0xca, 0x5c, 0x4a, 0xd8, 0x84, 0x7d, 0x32, 0xf6, 0x79, 0x93, 0x91, 0x1b, 0x84, 0x2f, 0x3e, 0xa9,
0x7c, 0xe4, 0xa0, 0xdf, 0x39, 0xd0, 0x3a, 0xca, 0x03, 0x26, 0xe7, 0xea, 0x99, 0x8c, 0xaa, 0x54,
0x71, 0xf5, 0x50, 0x72, 0x65, 0xe3, 0x0a, 0x40, 0xaa, 0x18, 0x2b, 0x0e, 0x32, 0xc6, 0xcc, 0x4d,
0x9d, 0xb1, 0x46, 0x09, 0x63, 0x0d, 0x9d, 0xb1, 0x3d, 0x58, 0xb3, 0xa2, 0x6f, 0xf3, 0x20, 0xf1,
0x45, 0xcc, 0xc8, 0x14, 0x22, 0xe8, 0x94, 0x95, 0xac, 0x8a, 0x55, 0xb2, 0x7e, 0xe5, 0xc0, 0x4a,
0x5e, 0x09, 0x14, 0x99, 0x52, 0xdf, 0x7d, 0x3e, 0x2b, 0x87, 0xde, 0x2b, 0xcf, 0xa1, 0x82, 0xdc,
0xf5, 0xe5, 0xab, 0xa1, 0x95, 0xaf, 0x7d, 0x58, 0x2d, 0xfc, 0xe3, 0x1a, 0x76, 0x4a, 0xeb, 0x50,
0xc3, 0x4e, 0x8c, 0x2f, 0xc0, 0xd5, 0xeb, 0xa1, 0xa4, 0xf9, 0xc1, 0x54, 0x55, 0x5c, 0xb3, 0xaa,
0xa2, 0x64, 0x5e, 0xd5, 0x46, 0x1f, 0x6e, 0x1b, 0x8e, 0x2f, 0x29, 0x4d, 0x95, 0xb5, 0x86, 0x5e,
0xd6, 0x36, 0xa7, 0xc3, 0x60, 0xdd, 0x0e, 0x03, 0x79, 0x93, 0x16, 0x0c, 0xbf, 0x75, 0xa0, 0x6d,
0xf6, 0xbb, 0xea, 0xb2, 0x1b, 0xea, 0x25, 0x1f, 0x5b, 0x0d, 0x62, 0xb7, 0xac, 0x79, 0x92, 0x9c,
0x49, 0x4c, 0xf4, 0x37, 0x07, 0xd6, 0xac, 0xee, 0xf6, 0xc6, 0xf9, 0xfa, 0xae, 0xd9, 0xe3, 0xde,
0x29, 0xe9, 0xff, 0x24, 0x57, 0xb2, 0x0b, 0xfc, 0x7f, 0x04, 0xf9, 0x2b, 0xd3, 0xaf, 0xd1, 0xd1,
0xde, 0x88, 0x1c, 0xd5, 0x32, 0x39, 0x6a, 0x6f, 0x2d, 0x47, 0xfd, 0x8d, 0xe5, 0xf8, 0x45, 0xa5,
0xf0, 0x49, 0x31, 0x08, 0x4a, 0x31, 0x76, 0x66, 0x8c, 0x83, 0x77, 0x4b, 0xc7, 0x41, 0x71, 0xa8,
0x64, 0x28, 0x7c, 0x39, 0x6b, 0x28, 0xbc, 0x57, 0x3e, 0x14, 0x16, 0x84, 0xa6, 0x46, 0xc3, 0x9d,
0x19, 0xa3, 0xe1, 0xdd, 0xd2, 0xd1, 0x50, 0x63, 0xe8, 0x0d, 0x07, 0xc4, 0xbf, 0x3b, 0xbc, 0xfd,
0xd9, 0x4e, 0x28, 0xc9, 0x28, 0x2f, 0x7a, 0xa6, 0x29, 0xab, 0xb3, 0x4d, 0x59, 0xbb, 0xd6, 0x25,
0xd7, 0x61, 0x3e, 0xa5, 0x61, 0x9f, 0x26, 0x72, 0x4c, 0x91, 0x2b, 0xf7, 0x3e, 0x80, 0xc8, 0x31,
0x31, 0xf1, 0x13, 0x39, 0x52, 0x68, 0x10, 0x76, 0x8e, 0x8e, 0x63, 0x3f, 0xa1, 0x9d, 0x86, 0xb8,
0x43, 0xac, 0xcc, 0x49, 0x04, 0xec, 0x49, 0xe4, 0x0b, 0x70, 0xf5, 0x56, 0xe0, 0xe0, 0xec, 0x80,
0xd1, 0x7a, 0x08, 0x2b, 0xe9, 0x69, 0x74, 0x79, 0x38, 0xf2, 0x3c, 0x9a, 0xa6, 0x27, 0xa3, 0x80,
0x5b, 0x74, 0x11, 0x5b, 0x50, 0x8b, 0xa7, 0x9a, 0xcd, 0x13, 0xfa, 0x94, 0x15, 0x71, 0xde, 0xe7,
0xf4, 0x48, 0xb0, 0xb9, 0xd5, 0xef, 0x27, 0xa2, 0xd9, 0x71, 0xa1, 0x46, 0xfa, 0xfd, 0x44, 0xfa,
0x3c, 0xff, 0x56, 0x85, 0xbd, 0xa2, 0x15, 0x76, 0xf4, 0x43, 0xb3, 0x55, 0xe9, 0x91, 0x80, 0x84,
0x1e, 0x75, 0x1f, 0xc0, 0x92, 0xcc, 0xbb, 0x1a, 0x1d, 0x1d, 0xc4, 0xba, 0xe2, 0x63, 0x81, 0x2c,
0xc3, 0x27, 0x5f, 0xa2, 0xbf, 0x54, 0x8a, 0x01, 0xf3, 0x59, 0xef, 0x30, 0x8b, 0x12, 0x6a, 0x55,
0x32, 0xd5, 0x0c, 0x1b, 0x56, 0xad, 0xcc, 0xb6, 0x6a, 0xd5, 0xb0, 0xaa, 0xa8, 0x7f, 0xbb, 0xd6,
0xc8, 0x26, 0x8a, 0x11, 0x82, 0x66, 0x36, 0x2e, 0x3a, 0x57, 0x2c, 0xbb, 0x6b, 0x03, 0xe6, 0xbe,
0x0f, 0x2d, 0x29, 0x49, 0x01, 0xe4, 0xbe, 0xd0, 0xc4, 0x53, 0x70, 0xa6, 0xb5, 0xe8, 0x32, 0xa4,
0x09, 0x4f, 0x47, 0x0d, 0x2c, 0x16, 0xda, 0xa8, 0xb0, 0x38, 0x6b, 0x54, 0x68, 0x98, 0xa3, 0xc2,
0x3d, 0x68, 0x1c, 0x07, 0x91, 0x77, 0xc6, 0x95, 0x00, 0x62, 0x5c, 0x2a, 0x00, 0xe8, 0x35, 0xd4,
0x78, 0x3b, 0x32, 0xab, 0x36, 0x6e, 0x40, 0x83, 0x55, 0xdd, 0x1e, 0x49, 0x7d, 0x4f, 0x06, 0x6d,
0x4b, 0x2b, 0xd2, 0x1c, 0x8e, 0x15, 0x0a, 0x8a, 0x61, 0x85, 0xc1, 0x5f, 0x92, 0x0b, 0x7a, 0x34,
0x7e, 0xc9, 0x34, 0x7d, 0x45, 0x5f, 0x9e, 0x71, 0x0c, 0xa9, 0x7e, 0xb9, 0x32, 0x6f, 0xac, 0x5e,
0x7f, 0xe3, 0xfb, 0x50, 0x17, 0x81, 0xfa, 0x0d, 0xa8, 0x33, 0x68, 0xde, 0x8c, 0x2e, 0x69, 0x87,
0xb0, 0xd8, 0x41, 0x58, 0x4c, 0xe7, 0x8a, 0xbb, 0xd4, 0x7d, 0x2a, 0x7a, 0x11, 0x0d, 0x64, 0xd5,
0x71, 0xf3, 0x00, 0xb6, 0xb1, 0xd1, 0x09, 0x8b, 0xb3, 0x73, 0x7b, 0x7c, 0xbc, 0xba, 0x00, 0x74,
0x61, 0x71, 0xe8, 0x8f, 0xb7, 0x8b, 0x12, 0x50, 0xc7, 0xc5, 0xda, 0xf0, 0xbd, 0xaa, 0x36, 0x18,
0xa4, 0xd0, 0x28, 0xe4, 0x2f, 0x9b, 0x42, 0x1d, 0xe3, 0x99, 0xed, 0xda, 0xd1, 0x5f, 0x35, 0x3d,
0x07, 0x65, 0xc3, 0xb7, 0x00, 0x22, 0x0c, 0x2d, 0xde, 0xb8, 0xf3, 0x2e, 0x6c, 0x6b, 0x68, 0x31,
0x68, 0x1a, 0xf4, 0x61, 0xae, 0x7f, 0xb3, 0x4b, 0x57, 0x46, 0x93, 0x46, 0xf8, 0x8d, 0xc3, 0x34,
0x96, 0xde, 0x9c, 0xc6, 0xb6, 0xa1, 0xc5, 0x28, 0xeb, 0x4c, 0x72, 0xdd, 0x2d, 0x3d, 0x7e, 0x47,
0xe3, 0x41, 0xdf, 0xc6, 0x53, 0x07, 0xd0, 0x1f, 0x1c, 0xb8, 0xf5, 0x9c, 0xf9, 0xd1, 0x21, 0xfb,
0xd9, 0x0d, 0xf7, 0x43, 0x7a, 0x34, 0xbe, 0xbe, 0x8e, 0xcb, 0x84, 0x5e, 0x31, 0x12, 0xba, 0x4a,
0xd8, 0x55, 0x23, 0x61, 0x9b, 0x93, 0xb9, 0x6a, 0xab, 0x0b, 0xcf, 0xad, 0xcf, 0xf4, 0xdc, 0x9f,
0x40, 0x13, 0x53, 0x12, 0x14, 0x6f, 0x42, 0x08, 0x9a, 0x09, 0x25, 0x01, 0x2f, 0xf9, 0x79, 0xbf,
0x5f, 0xc7, 0x06, 0x8c, 0xe5, 0xfa, 0xbc, 0x85, 0x4d, 0xfc, 0x0b, 0x65, 0x63, 0x0b, 0x8a, 0x36,
0x01, 0x0a, 0x23, 0xa5, 0xca, 0x8c, 0xce, 0xd5, 0x66, 0xfc, 0x47, 0x05, 0xd6, 0x45, 0x9d, 0x3c,
0x52, 0x0f, 0xcb, 0xdb, 0xc4, 0x3b, 0xa5, 0xfa, 0x0c, 0xd2, 0x14, 0x33, 0xc8, 0x7d, 0x00, 0x8f,
0xe3, 0xb2, 0x7b, 0x65, 0xda, 0xd6, 0x20, 0xcc, 0xbc, 0xa9, 0x3f, 0x08, 0xf9, 0xae, 0xd0, 0x59,
0xb1, 0xe6, 0x5a, 0xce, 0x48, 0x36, 0x4a, 0x65, 0xca, 0x95, 0x2b, 0x77, 0x13, 0x96, 0xb4, 0x27,
0x6d, 0xd9, 0xed, 0xb8, 0xf9, 0x0c, 0xa5, 0x76, 0xb0, 0x8e, 0x36, 0xb3, 0x08, 0x7f, 0x28, 0x14,
0x5a, 0x34, 0xf3, 0x0b, 0xc6, 0x88, 0xac, 0xeb, 0x1e, 0x1b, 0x88, 0xee, 0x37, 0x73, 0x7d, 0x2d,
0xf2, 0x13, 0xb7, 0x6c, 0x7d, 0xa5, 0x52, 0x61, 0xa6, 0x2f, 0x35, 0x2c, 0x5f, 0x42, 0x3d, 0xd1,
0x78, 0x30, 0xfd, 0x1d, 0x8d, 0x3f, 0xf3, 0xd3, 0xac, 0xb4, 0x94, 0x5e, 0x59, 0xb6, 0xd0, 0x47,
0xd0, 0xe2, 0x25, 0x55, 0xa7, 0xf2, 0x1e, 0x54, 0xb3, 0x71, 0x6e, 0xcc, 0x32, 0xed, 0xb0, 0x6d,
0xb4, 0x03, 0xb7, 0xd4, 0xb3, 0xc5, 0x96, 0xc7, 0x1f, 0x13, 0xae, 0x71, 0xfe, 0x9c, 0xbd, 0x8a,
0x62, 0x0f, 0xfd, 0x8c, 0xe7, 0xc2, 0x03, 0x8b, 0xce, 0x1b, 0xf7, 0x04, 0xac, 0xf8, 0xf7, 0xfd,
0x34, 0x0e, 0xc8, 0x64, 0x18, 0xf5, 0xa9, 0x7c, 0xd9, 0xd2, 0x41, 0xe8, 0x4b, 0xeb, 0x81, 0x43,
0x5e, 0x81, 0x94, 0xd3, 0x32, 0x2f, 0x68, 0x6a, 0x46, 0x28, 0xf4, 0x8f, 0xa0, 0x7e, 0x22, 0xf3,
0x53, 0x09, 0x0e, 0xdf, 0x7a, 0x03, 0x06, 0x5e, 0x31, 0x06, 0x64, 0x83, 0x28, 0xf5, 0xcc, 0xaa,
0xf5, 0xd5, 0xba, 0xea, 0xc0, 0x02, 0x0b, 0x74, 0x15, 0x82, 0xf9, 0x12, 0xfd, 0xdb, 0x81, 0x3b,
0xda, 0x83, 0x91, 0xb2, 0x0b, 0x37, 0xde, 0xd5, 0x54, 0x11, 0x34, 0x99, 0xf3, 0x62, 0xea, 0x5d,
0x3c, 0x0f, 0xc8, 0x40, 0xe6, 0x45, 0x03, 0xc6, 0x28, 0xf4, 0xfd, 0x84, 0x8a, 0x10, 0x11, 0xe2,
0x28, 0x80, 0x7a, 0x44, 0x12, 0x91, 0x55, 0x2f, 0xec, 0x75, 0x92, 0x44, 0xc3, 0xbc, 0x77, 0x65,
0xdf, 0x4c, 0x02, 0x66, 0x37, 0x9a, 0xa6, 0x32, 0x6e, 0xf2, 0x25, 0x0b, 0xed, 0x94, 0xd2, 0xbe,
0x4c, 0x6c, 0x0b, 0x5c, 0x3c, 0x0d, 0x82, 0x3e, 0xe1, 0x8e, 0x8d, 0x69, 0xea, 0x91, 0xf0, 0x73,
0xae, 0xe4, 0x36, 0xd4, 0xd9, 0x61, 0xe1, 0x94, 0x0d, 0x2c, 0x16, 0xfc, 0x56, 0x25, 0x05, 0xff,
0x46, 0x1f, 0xc3, 0x2a, 0xa6, 0xb1, 0x38, 0x8b, 0x69, 0x3a, 0x0a, 0xca, 0x9d, 0xa9, 0xec, 0xe8,
0x29, 0xbb, 0x36, 0xd6, 0xaf, 0xcd, 0xb1, 0x1c, 0x85, 0xe5, 0xf6, 0xa0, 0x95, 0x98, 0x17, 0xa4,
0xd6, 0x74, 0x6d, 0xdd, 0x8f, 0xa7, 0xf0, 0xd1, 0x23, 0x16, 0x75, 0xe7, 0x3b, 0x21, 0x39, 0x0e,
0x68, 0xfe, 0x5f, 0x4d, 0x21, 0x62, 0x45, 0x13, 0x11, 0xed, 0xf2, 0xa7, 0x6c, 0xd6, 0x2c, 0x5f,
0x2d, 0xcc, 0x6e, 0xba, 0xbf, 0xc7, 0x85, 0x59, 0xc4, 0xfc, 0x9b, 0x25, 0xd4, 0x61, 0x3a, 0x90,
0xd3, 0x07, 0xfb, 0x44, 0x3d, 0x1e, 0xea, 0xe6, 0xa5, 0x1b, 0xb0, 0x90, 0x48, 0x19, 0xcc, 0xf7,
0x38, 0xe3, 0x52, 0x9c, 0x23, 0xa1, 0x3f, 0xa9, 0x31, 0xfc, 0xd0, 0x1f, 0x84, 0x24, 0x1b, 0x25,
0xf4, 0x80, 0x24, 0x64, 0xc8, 0x6c, 0x2a, 0xbc, 0xf0, 0x68, 0x12, 0x53, 0xa9, 0x30, 0x0d, 0xe2,
0x7e, 0x00, 0xc0, 0x62, 0xea, 0x98, 0xe7, 0x37, 0xa9, 0xb0, 0x92, 0xc4, 0xa7, 0x21, 0xb9, 0x1f,
0xc3, 0x72, 0xa2, 0x25, 0xd1, 0x54, 0x56, 0xe8, 0xd2, 0x04, 0x6b, 0x62, 0xa2, 0x3f, 0x3a, 0xd0,
0xfe, 0x11, 0x09, 0x02, 0x9a, 0xc9, 0x70, 0xcf, 0x05, 0xbe, 0x0f, 0x70, 0xe1, 0xd3, 0x4b, 0xd9,
0xc0, 0x88, 0x72, 0xa3, 0x41, 0x58, 0x34, 0xf3, 0x55, 0xe2, 0x5f, 0xec, 0x15, 0xa1, 0xa7, 0x83,
0x18, 0x46, 0x1a, 0xd3, 0xb0, 0x2f, 0x49, 0x88, 0xff, 0x40, 0x74, 0x10, 0x0f, 0x32, 0xbe, 0x94,
0x44, 0xc4, 0x9b, 0xba, 0x01, 0x43, 0xbf, 0xac, 0xf0, 0xbc, 0x27, 0x92, 0x42, 0x1e, 0xca, 0xe3,
0xeb, 0xf3, 0x27, 0x13, 0x3d, 0x77, 0x5a, 0xf6, 0x3d, 0x73, 0xee, 0xc8, 0xa7, 0xc9, 0x9a, 0x36,
0x4d, 0x96, 0x45, 0xa9, 0xfd, 0x27, 0x98, 0x39, 0xc5, 0xc1, 0xd4, 0x64, 0x29, 0xba, 0x2a, 0x91,
0x02, 0x96, 0x8a, 0xae, 0xca, 0xcb, 0xdb, 0x3c, 0xd9, 0xc4, 0x34, 0x67, 0x4f, 0x9d, 0xcb, 0xd6,
0xd4, 0xf9, 0xf8, 0x9f, 0x15, 0x58, 0xd0, 0xfe, 0xc7, 0x3d, 0x3c, 0x8d, 0x2e, 0xa5, 0x42, 0x98,
0xba, 0x5b, 0x85, 0xb5, 0xcf, 0x0f, 0xb3, 0xc4, 0x0f, 0x07, 0xdd, 0x3b, 0x2a, 0xcc, 0xac, 0x51,
0x15, 0xcd, 0xb1, 0x0a, 0xaf, 0x4f, 0xe2, 0x6b, 0xea, 0xb4, 0x06, 0xee, 0x36, 0x75, 0x12, 0x68,
0xce, 0xfd, 0x01, 0x2c, 0xe9, 0x61, 0xaf, 0x9d, 0xd2, 0xc0, 0xdd, 0x35, 0x3b, 0xbe, 0x39, 0x18,
0xcd, 0xb9, 0xdb, 0xb0, 0x6c, 0x86, 0xd5, 0x3b, 0x8a, 0x80, 0xb1, 0xd1, 0x55, 0x1b, 0x66, 0x20,
0xa2, 0x39, 0xf7, 0x05, 0xb4, 0x05, 0x8b, 0x98, 0x5c, 0x6a, 0x49, 0xdd, 0xbd, 0x63, 0x8b, 0x50,
0x78, 0x4b, 0xb7, 0xa4, 0x36, 0xa3, 0xb9, 0xe3, 0x79, 0xfe, 0x4f, 0xfd, 0xf7, 0xfe, 0x17, 0x00,
0x00, 0xff, 0xff, 0x55, 0x8e, 0x3d, 0x9d, 0xe2, 0x1f, 0x00, 0x00,
0xd9, 0x3d, 0xe3, 0xb1, 0x3d, 0x9f, 0xc7, 0xf6, 0xa4, 0x76, 0xec, 0x75, 0x26, 0x51, 0x14, 0x6a,
0x57, 0x21, 0x2c, 0xc8, 0x68, 0x8d, 0xa5, 0x7d, 0x10, 0x94, 0xf5, 0x38, 0x4e, 0x62, 0x79, 0x13,
0x9b, 0xb2, 0x57, 0x20, 0xb4, 0x48, 0x94, 0x7b, 0xca, 0x76, 0xcb, 0x3d, 0xdd, 0xed, 0xee, 0x1e,
0x7b, 0xe6, 0xb4, 0x9c, 0x10, 0x07, 0x0e, 0x48, 0x20, 0x38, 0x80, 0xb8, 0xc1, 0x99, 0x3f, 0x01,
0x27, 0x4e, 0xfc, 0x01, 0xc4, 0x1f, 0xe0, 0x37, 0xa0, 0x7a, 0x74, 0xd7, 0xc3, 0x3d, 0x76, 0xc2,
0x9a, 0xcb, 0xa8, 0xeb, 0xab, 0xaf, 0xbe, 0xfa, 0xde, 0x8f, 0x1a, 0x58, 0x48, 0xd2, 0xe0, 0x82,
0xfa, 0xe3, 0xb5, 0x24, 0x8d, 0xf3, 0x18, 0x35, 0xf2, 0x71, 0xc2, 0xb2, 0x6e, 0xcb, 0x8f, 0x07,
0x83, 0x38, 0x92, 0xc0, 0xee, 0x9d, 0x3c, 0xa5, 0x51, 0x46, 0xfd, 0x3c, 0x28, 0x40, 0xf8, 0x3f,
0x1e, 0x2c, 0xec, 0xcb, 0x93, 0x9b, 0x02, 0x8e, 0x9e, 0xc2, 0x62, 0x32, 0x3c, 0x0a, 0x03, 0x7f,
0x5d, 0x51, 0x5c, 0xf5, 0x1e, 0x7a, 0x8f, 0xe7, 0xd7, 0x97, 0xd7, 0x04, 0xc9, 0xb5, 0x7d, 0xb9,
0xa9, 0x0e, 0xbd, 0x9c, 0x22, 0x0e, 0x3a, 0xea, 0xc1, 0x92, 0xfa, 0x2c, 0x29, 0xd4, 0x04, 0x85,
0x95, 0x82, 0x82, 0xda, 0xd5, 0x24, 0xdc, 0x03, 0x82, 0x89, 0x02, 0x24, 0xa8, 0xaf, 0xd6, 0x6d,
0x26, 0x0a, 0x12, 0x62, 0x53, 0x30, 0x61, 0xa1, 0xa3, 0x45, 0xa8, 0xe5, 0xe3, 0xd5, 0xe9, 0x87,
0xde, 0xe3, 0x06, 0xa9, 0xe5, 0xe3, 0xde, 0x2c, 0x34, 0x2e, 0x68, 0x38, 0x64, 0xf8, 0x2f, 0x1e,
0x2c, 0xda, 0x22, 0xa0, 0xfb, 0xd0, 0xcc, 0xe3, 0x33, 0x16, 0x45, 0x74, 0xc0, 0x84, 0xb0, 0x4d,
0xa2, 0x01, 0x68, 0x05, 0x66, 0xe8, 0x20, 0x1e, 0x46, 0xb9, 0x90, 0xa2, 0x4e, 0xd4, 0x0a, 0x21,
0x98, 0x8e, 0xe2, 0x9c, 0xad, 0x36, 0xc4, 0x01, 0xf1, 0x8d, 0xbe, 0x03, 0x33, 0xf1, 0x30, 0x4f,
0x86, 0xf9, 0xea, 0xac, 0x60, 0xb7, 0x63, 0xb3, 0xbb, 0x27, 0xf6, 0x88, 0xc2, 0xe1, 0xf7, 0xd2,
0x2c, 0x63, 0xf9, 0xf6, 0x88, 0xf9, 0xab, 0x73, 0xf2, 0xde, 0x12, 0x80, 0xff, 0xe9, 0xc1, 0x92,
0xa3, 0xa9, 0x5b, 0xe4, 0xf4, 0x5b, 0xd0, 0x08, 0x22, 0xce, 0xe8, 0x8c, 0x60, 0xf4, 0x1d, 0x9b,
0xd1, 0x1d, 0xbe, 0x45, 0x24, 0xc6, 0xad, 0x0a, 0xf5, 0x6f, 0xae, 0x7d, 0xcb, 0x76, 0x5f, 0x53,
0xa6, 0xba, 0x21, 0x13, 0xb7, 0x79, 0x2c, 0x04, 0x6a, 0x92, 0x5a, 0x1e, 0x6b, 0x19, 0xa7, 0xdf,
0x42, 0xc6, 0xc6, 0xd7, 0x96, 0x71, 0x1b, 0x96, 0xbe, 0x38, 0xfc, 0xf1, 0xde, 0x8b, 0x30, 0x3e,
0xa2, 0xe1, 0x4e, 0xd4, 0x67, 0x23, 0x2e, 0x45, 0x3e, 0x3a, 0xa5, 0xd9, 0xa9, 0xe0, 0xb7, 0x45,
0xd4, 0x0a, 0x75, 0x61, 0x2e, 0x1e, 0xe6, 0x01, 0xc7, 0x51, 0xbe, 0x5a, 0xae, 0xf1, 0xcf, 0x3d,
0x98, 0xdb, 0x65, 0x92, 0x4d, 0x43, 0x0d, 0x9e, 0xa5, 0x86, 0xcf, 0x60, 0x69, 0x98, 0x8f, 0x62,
0xe3, 0xae, 0xd5, 0xda, 0xc3, 0xba, 0x11, 0x6b, 0x0e, 0x27, 0xc4, 0x45, 0xe7, 0x2c, 0x9c, 0xb1,
0xf1, 0xce, 0x80, 0x9e, 0x30, 0xc5, 0x5c, 0xb9, 0xc6, 0xdf, 0x87, 0x96, 0xa9, 0x2c, 0xf4, 0x6d,
0x81, 0x2b, 0x75, 0xea, 0x89, 0x6b, 0x96, 0xd4, 0x35, 0x05, 0xa3, 0xa4, 0x44, 0xc0, 0x3b, 0xd0,
0x3c, 0x63, 0x4a, 0x73, 0x13, 0xf9, 0x7f, 0x1f, 0x16, 0xe2, 0x88, 0xe5, 0xc1, 0x80, 0x25, 0xc3,
0xa3, 0x33, 0x26, 0x33, 0x45, 0x8b, 0xd8, 0x40, 0xfc, 0xd3, 0x32, 0x47, 0xed, 0x95, 0x06, 0x20,
0xc9, 0xf0, 0x68, 0x97, 0x8d, 0xf3, 0x91, 0xa0, 0xd8, 0x22, 0x1a, 0x80, 0xd6, 0xc4, 0xcd, 0xca,
0x9e, 0x52, 0x1d, 0x6d, 0xc5, 0x67, 0xc9, 0x11, 0xd1, 0x28, 0x38, 0x81, 0xce, 0x8b, 0x34, 0x1e,
0x26, 0x15, 0x56, 0xfb, 0xff, 0x28, 0x1d, 0xff, 0xc1, 0x83, 0x85, 0xcf, 0x63, 0x9f, 0x86, 0x1c,
0x73, 0x27, 0x67, 0x03, 0x7e, 0xd7, 0x29, 0x0b, 0x4e, 0x4e, 0xcb, 0xbb, 0xe4, 0x0a, 0xad, 0xc2,
0x6c, 0x3e, 0x0a, 0xd4, 0x1d, 0xdc, 0x41, 0x8a, 0xa5, 0xe5, 0x3b, 0x75, 0xdb, 0x77, 0x0c, 0x7f,
0x9b, 0xb6, 0xfc, 0xed, 0x8a, 0xba, 0x1b, 0x55, 0xea, 0xfe, 0x0a, 0x16, 0x09, 0x3b, 0xe7, 0xac,
0xed, 0x0b, 0x95, 0x66, 0x65, 0x8c, 0xbe, 0x76, 0x63, 0x94, 0x03, 0xd0, 0x1e, 0x74, 0x4e, 0x2a,
0xf4, 0xa7, 0x94, 0x72, 0x4f, 0x29, 0xa5, 0x4a, 0xc5, 0xa4, 0xf2, 0x20, 0x7e, 0x0f, 0x16, 0x64,
0x72, 0xd8, 0x65, 0xe3, 0x67, 0x34, 0xa7, 0x3c, 0xda, 0xfb, 0x34, 0xa7, 0xc2, 0xe9, 0x5a, 0x44,
0x7c, 0xe3, 0x4d, 0x58, 0x2a, 0x49, 0x4a, 0x3e, 0x27, 0x1a, 0x6c, 0x05, 0x66, 0x4a, 0xf7, 0xe2,
0x04, 0xd4, 0x0a, 0x1f, 0x72, 0x41, 0x33, 0x53, 0xd0, 0x1e, 0xb4, 0x4f, 0x6c, 0xa2, 0x99, 0xf2,
0xf4, 0x15, 0x57, 0x0c, 0xb9, 0x4d, 0xae, 0xe0, 0xe3, 0xa7, 0xb0, 0x44, 0xd8, 0xb9, 0x72, 0xd8,
0x43, 0xae, 0x25, 0xd4, 0x81, 0x86, 0x50, 0x97, 0xd2, 0x9d, 0x5c, 0x4c, 0xca, 0x6d, 0xf8, 0x09,
0xb4, 0x36, 0xc5, 0xd7, 0x33, 0x96, 0xd3, 0x20, 0x9c, 0x28, 0x56, 0x07, 0x1a, 0xbe, 0x71, 0x5c,
0x2e, 0xf0, 0x6b, 0x78, 0x87, 0xb0, 0x24, 0x1c, 0x17, 0x55, 0x5d, 0xe0, 0x66, 0xe8, 0x23, 0x68,
0x51, 0x83, 0xa8, 0x92, 0xaa, 0xc8, 0x89, 0xe6, 0x7d, 0xc4, 0x42, 0xc4, 0x04, 0x50, 0xca, 0xe9,
0x71, 0x11, 0xb3, 0xbd, 0x63, 0x89, 0x89, 0x9e, 0xc0, 0x62, 0x68, 0x3a, 0x70, 0xa1, 0xa6, 0x22,
0x71, 0x5a, 0xde, 0x4d, 0x1c, 0x5c, 0xfc, 0x25, 0x74, 0x08, 0xf3, 0x59, 0x90, 0xe4, 0x76, 0x5c,
0x57, 0xeb, 0xe9, 0x6d, 0xe3, 0xf9, 0xd7, 0x1e, 0x2c, 0x28, 0xb1, 0xf7, 0x8e, 0xf9, 0xa5, 0x68,
0x13, 0x9a, 0x52, 0xa6, 0x57, 0x34, 0x51, 0x8c, 0xbe, 0x67, 0x49, 0xae, 0x10, 0xd5, 0xea, 0x15,
0x4d, 0xb6, 0xa3, 0x3c, 0x1d, 0x13, 0x7d, 0xaa, 0xfb, 0x04, 0x16, 0xed, 0x4d, 0xd4, 0x86, 0x3a,
0x77, 0x29, 0x69, 0x13, 0xfe, 0xc9, 0xd9, 0x17, 0x4d, 0x46, 0x61, 0x10, 0xb1, 0xf8, 0xb4, 0xf6,
0xb1, 0x87, 0x7f, 0xe7, 0x41, 0xfb, 0xb0, 0x08, 0x98, 0x82, 0xab, 0x67, 0x2a, 0xaa, 0x32, 0xcd,
0xd5, 0x23, 0xc5, 0x95, 0x8b, 0x2b, 0x01, 0x99, 0x66, 0xac, 0x3c, 0xc8, 0x19, 0xb3, 0x37, 0x4d,
0xc6, 0x9a, 0x15, 0x8c, 0x35, 0x4d, 0xc6, 0x76, 0x61, 0xd9, 0x89, 0xbe, 0x8d, 0xfd, 0x34, 0x90,
0x31, 0xa3, 0x52, 0x88, 0xa4, 0x53, 0x55, 0xb2, 0x6a, 0x4e, 0xc9, 0xfa, 0x95, 0x07, 0x8b, 0x45,
0x25, 0xd0, 0x64, 0x2a, 0x7d, 0xf7, 0xf9, 0xa4, 0x1c, 0x7a, 0xbf, 0x3a, 0x87, 0x4a, 0x72, 0x37,
0x97, 0xaf, 0xa6, 0x51, 0xbe, 0xf6, 0x60, 0xa9, 0xf4, 0x8f, 0x1b, 0xd8, 0xa9, 0xac, 0x43, 0x4d,
0x37, 0x31, 0xbe, 0x00, 0x64, 0xd6, 0x43, 0x45, 0xf3, 0xc3, 0x2b, 0x55, 0x71, 0xd9, 0xa9, 0x8a,
0x8a, 0x79, 0x5d, 0x1b, 0x03, 0x78, 0xc7, 0x72, 0x7c, 0x45, 0xe9, 0x4a, 0x59, 0x6b, 0x9a, 0x65,
0x6d, 0xe3, 0x6a, 0x18, 0xac, 0xb8, 0x61, 0xa0, 0x6e, 0x32, 0x82, 0xe1, 0xb7, 0x1e, 0x74, 0xec,
0x7e, 0x57, 0x5f, 0x76, 0x4b, 0xbd, 0xe4, 0xba, 0xd3, 0x20, 0x76, 0xab, 0x9a, 0x27, 0xc5, 0x99,
0xc2, 0xc4, 0x7f, 0xf7, 0x60, 0xd9, 0xe9, 0x6e, 0x6f, 0x9d, 0xaf, 0xef, 0xda, 0x3d, 0xee, 0xdd,
0x8a, 0xfe, 0x4f, 0x71, 0xa5, 0xba, 0xc0, 0xff, 0x45, 0x90, 0xbf, 0x71, 0xfd, 0x5a, 0x1d, 0xed,
0xad, 0xc8, 0x51, 0xaf, 0x92, 0x63, 0xfa, 0xad, 0xe5, 0x68, 0xbc, 0xb1, 0x1c, 0xbf, 0xa8, 0x95,
0x3e, 0x29, 0x07, 0x41, 0x25, 0xc6, 0xf6, 0x84, 0x71, 0xf0, 0x5e, 0xe5, 0x38, 0x28, 0x0f, 0x55,
0x0c, 0x85, 0x2f, 0x27, 0x0d, 0x85, 0xf7, 0xab, 0x87, 0xc2, 0x92, 0xd0, 0x95, 0xd1, 0x70, 0x7b,
0xc2, 0x68, 0x78, 0xaf, 0x72, 0x34, 0x34, 0x18, 0x7a, 0xc3, 0x01, 0xf1, 0x4b, 0x40, 0x66, 0xfd,
0xdc, 0x3f, 0xdb, 0xa7, 0x41, 0x8a, 0x1e, 0xc1, 0x62, 0x76, 0x1a, 0x5f, 0x1e, 0x0c, 0x7d, 0x9f,
0x65, 0xd9, 0xf1, 0x30, 0x14, 0x6a, 0x98, 0x23, 0x0e, 0x14, 0x3d, 0x00, 0x90, 0xc9, 0x22, 0xa1,
0x41, 0x2a, 0xc8, 0x37, 0x89, 0x01, 0xc1, 0x9f, 0xf1, 0xca, 0x27, 0x9a, 0x83, 0x1e, 0x0d, 0x37,
0x36, 0xfb, 0xfd, 0x54, 0x76, 0x08, 0x08, 0xa6, 0x69, 0xbf, 0x9f, 0x2a, 0x47, 0x11, 0xdf, 0xba,
0x1a, 0xd6, 0x8c, 0x6a, 0x88, 0x7f, 0x68, 0xd7, 0xf7, 0x1e, 0x0d, 0x69, 0xe4, 0x33, 0xf4, 0x10,
0xe6, 0x55, 0xb2, 0x32, 0xe8, 0x98, 0x20, 0xde, 0x4a, 0x1e, 0x49, 0x64, 0xe5, 0x73, 0xc5, 0x12,
0xff, 0xb5, 0x56, 0x4e, 0x65, 0xcf, 0x7a, 0x07, 0x79, 0x9c, 0x32, 0x27, 0xfd, 0xeb, 0x0e, 0xd2,
0xf2, 0xea, 0xda, 0x64, 0xaf, 0xae, 0x5b, 0x5e, 0x2d, 0x8b, 0xc6, 0x8e, 0x33, 0xe7, 0xc8, 0x0c,
0x8e, 0xa1, 0x95, 0x8f, 0xca, 0x76, 0x8f, 0xa8, 0x96, 0xd4, 0x82, 0xa1, 0x0f, 0xa0, 0xad, 0x24,
0x29, 0x81, 0x22, 0xa8, 0x5b, 0xe4, 0x0a, 0x9c, 0x6b, 0x2d, 0xbe, 0x8c, 0x58, 0x2a, 0x62, 0xb8,
0x49, 0xe4, 0xc2, 0xe8, 0xaf, 0xe7, 0x26, 0xf5, 0xd7, 0x4d, 0xbb, 0xbf, 0xbe, 0x0f, 0xcd, 0xa3,
0x30, 0xf6, 0xcf, 0x84, 0x12, 0x40, 0xce, 0x18, 0x25, 0x00, 0xbf, 0x86, 0x69, 0x51, 0xc3, 0x27,
0x15, 0x94, 0x35, 0x68, 0xf2, 0x52, 0xd5, 0xa3, 0x59, 0xe0, 0x2b, 0x4f, 0x6f, 0x1b, 0x95, 0x4d,
0xc0, 0x89, 0x46, 0xc1, 0x09, 0x2c, 0x72, 0xf8, 0x4b, 0x7a, 0xc1, 0x0e, 0x47, 0x2f, 0xb9, 0xa6,
0xaf, 0x69, 0x66, 0x73, 0x81, 0xa1, 0xd4, 0xaf, 0x56, 0xf6, 0x8d, 0xf5, 0x9b, 0x6f, 0xfc, 0x00,
0x1a, 0xa2, 0xa5, 0x43, 0xdf, 0x80, 0x06, 0x87, 0x16, 0x1d, 0xdc, 0xbc, 0x71, 0x88, 0xc8, 0x1d,
0x4c, 0xe4, 0x48, 0xab, 0xb9, 0xcb, 0xd0, 0x53, 0x59, 0xc0, 0x0d, 0x90, 0x53, 0xfc, 0xec, 0x03,
0xc4, 0xc5, 0xc6, 0xc7, 0x3c, 0xce, 0xce, 0xdd, 0x99, 0xeb, 0xfa, 0xac, 0xd9, 0x85, 0xb9, 0x41,
0x30, 0xda, 0x2a, 0xf3, 0x66, 0x83, 0x94, 0x6b, 0xcb, 0xf7, 0xea, 0x46, 0x37, 0x9d, 0x41, 0xb3,
0x94, 0xbf, 0x6a, 0x74, 0xf3, 0xac, 0xb7, 0xa9, 0x1b, 0xe7, 0x65, 0xdd, 0x29, 0xec, 0x57, 0x4d,
0xac, 0x12, 0x88, 0x09, 0xb4, 0x45, 0xb7, 0x2b, 0x5a, 0x97, 0xcd, 0x81, 0xc3, 0xa0, 0x6d, 0xd0,
0x47, 0x85, 0xfe, 0xed, 0xd6, 0x56, 0x1b, 0x4d, 0x19, 0xe1, 0x37, 0x1e, 0xd7, 0x58, 0x76, 0x7b,
0x1a, 0xdb, 0x82, 0x36, 0xa7, 0x6c, 0x32, 0x29, 0x74, 0x37, 0xbf, 0xfe, 0xae, 0xc1, 0x83, 0xb9,
0x4d, 0xae, 0x1c, 0xc0, 0x7f, 0xf4, 0xe0, 0xce, 0x73, 0xee, 0x47, 0x07, 0xfc, 0x67, 0x27, 0xda,
0x8b, 0xd8, 0xe1, 0xe8, 0xe6, 0xe2, 0x97, 0xb1, 0xa8, 0xcf, 0xd2, 0xc2, 0x85, 0xe5, 0x8a, 0xc3,
0xd9, 0x28, 0x09, 0x52, 0x56, 0xa4, 0x0f, 0xb9, 0x72, 0xc6, 0x59, 0xdd, 0x8b, 0x96, 0x9e, 0xdb,
0x98, 0xe8, 0xb9, 0x3f, 0x81, 0x16, 0x61, 0x34, 0x2c, 0x1f, 0x52, 0x30, 0xb4, 0x52, 0x46, 0x43,
0x51, 0x27, 0x8b, 0x26, 0xb9, 0x41, 0x2c, 0x18, 0xcf, 0xf5, 0x45, 0xdf, 0x97, 0x06, 0x17, 0xda,
0xc6, 0x0e, 0x14, 0x6f, 0x00, 0x94, 0x46, 0xca, 0xb4, 0x19, 0xbd, 0xeb, 0xcd, 0xf8, 0x8f, 0x1a,
0xac, 0x6c, 0xa5, 0x8c, 0xe6, 0xec, 0x50, 0xbf, 0xc6, 0x6e, 0x51, 0xff, 0x94, 0x99, 0x8d, 0x7b,
0x4b, 0x36, 0xee, 0x0f, 0x00, 0x7c, 0x81, 0xcb, 0xef, 0x55, 0x69, 0xdb, 0x80, 0x70, 0xf3, 0x66,
0xc1, 0x49, 0x24, 0x76, 0xa5, 0xce, 0xca, 0xb5, 0xd0, 0x72, 0x4e, 0xf3, 0x61, 0xa6, 0x52, 0xae,
0x5a, 0xa1, 0x0d, 0x98, 0x37, 0xde, 0x81, 0x55, 0x8b, 0x80, 0x8a, 0xc1, 0x43, 0xef, 0x10, 0x13,
0xcd, 0xb0, 0xd9, 0x8c, 0x65, 0xb3, 0x8f, 0xa4, 0x42, 0xcb, 0x0e, 0x78, 0xd6, 0x9a, 0x2b, 0x4d,
0xdd, 0x13, 0x0b, 0x11, 0x7d, 0xb3, 0xd0, 0xd7, 0x9c, 0x38, 0x71, 0xc7, 0xd5, 0x57, 0xa6, 0x14,
0x66, 0xfb, 0x52, 0xd3, 0xf1, 0x25, 0xdc, 0x13, 0x8f, 0x15, 0x42, 0x7f, 0x87, 0xa3, 0xcf, 0x83,
0x2c, 0xaf, 0x2c, 0xa5, 0xd7, 0x96, 0x2d, 0xfc, 0x31, 0xb4, 0x45, 0x49, 0x35, 0xa9, 0xbc, 0x0f,
0xf5, 0x7c, 0x54, 0x18, 0xb3, 0x4a, 0x3b, 0x7c, 0x1b, 0x6f, 0xc3, 0x1d, 0x3d, 0xeb, 0x6f, 0xfa,
0x62, 0x02, 0xbf, 0xc1, 0xf9, 0x0b, 0xf6, 0x6a, 0x9a, 0x3d, 0xfc, 0x33, 0x91, 0x0b, 0xf7, 0x1d,
0x3a, 0x6f, 0xdc, 0x13, 0xf0, 0xe2, 0xdf, 0x0f, 0xb2, 0x24, 0xa4, 0xe3, 0x41, 0xdc, 0x67, 0xea,
0x39, 0xc8, 0x04, 0xe1, 0xaf, 0x9c, 0x57, 0x01, 0x75, 0x05, 0xd6, 0x4e, 0xcb, 0xbd, 0xa0, 0x65,
0x18, 0xa1, 0xd4, 0x3f, 0x86, 0xc6, 0xb1, 0xca, 0x4f, 0x15, 0x38, 0x62, 0xeb, 0x0d, 0x18, 0x78,
0xc5, 0x19, 0x38, 0x97, 0x8e, 0xaf, 0xf4, 0xcc, 0xab, 0xf5, 0xf5, 0xba, 0x5a, 0x85, 0x59, 0x1e,
0xe8, 0x3a, 0x04, 0x8b, 0x25, 0xfe, 0x97, 0x07, 0x77, 0x8d, 0x57, 0x16, 0x6d, 0x17, 0x61, 0xbc,
0xeb, 0xa9, 0x62, 0x68, 0x71, 0xe7, 0x25, 0xcc, 0xbf, 0x78, 0x1e, 0xd2, 0x13, 0x95, 0x17, 0x2d,
0x18, 0xa7, 0xd0, 0x0f, 0x52, 0x26, 0x43, 0x44, 0x8a, 0xa3, 0x01, 0xfa, 0xe5, 0x45, 0x46, 0x56,
0xa3, 0xb4, 0xd7, 0x71, 0x1a, 0x0f, 0x8a, 0x19, 0x84, 0x7f, 0x73, 0x09, 0xb8, 0xdd, 0x58, 0x96,
0xa9, 0xb8, 0x29, 0x96, 0x3c, 0xb4, 0x33, 0xc6, 0xfa, 0x2a, 0xb1, 0xcd, 0x0a, 0xf1, 0x0c, 0x08,
0xfe, 0x54, 0x38, 0x36, 0x61, 0x99, 0x4f, 0xa3, 0x2f, 0x84, 0x92, 0x3b, 0xd0, 0xe0, 0x87, 0xa5,
0x53, 0x36, 0x89, 0x5c, 0x88, 0x5b, 0xb5, 0x14, 0xe2, 0x1b, 0x7f, 0x02, 0x4b, 0x84, 0x25, 0xf2,
0x2c, 0x61, 0xd9, 0x30, 0xac, 0x76, 0xa6, 0xaa, 0xa3, 0xa7, 0xfc, 0xda, 0xc4, 0xbc, 0xb6, 0xc0,
0xf2, 0x34, 0x16, 0xea, 0x41, 0x3b, 0xb5, 0x2f, 0xc8, 0x9c, 0x91, 0xd4, 0xb9, 0x9f, 0x5c, 0xc1,
0xc7, 0x8f, 0x79, 0xd4, 0x9d, 0x6f, 0x47, 0xf4, 0x28, 0x64, 0xc5, 0x1f, 0x1c, 0xa5, 0x88, 0x35,
0x43, 0x44, 0xbc, 0x23, 0xde, 0x7f, 0x79, 0xb3, 0x7c, 0xbd, 0x30, 0x3b, 0xd9, 0xde, 0xae, 0x10,
0x66, 0x8e, 0x88, 0x6f, 0x9e, 0x50, 0x07, 0xd9, 0x89, 0x1a, 0xa6, 0xf8, 0x27, 0xee, 0x89, 0x50,
0xb7, 0x2f, 0x5d, 0x83, 0xd9, 0x54, 0xc9, 0x60, 0x3f, 0x62, 0x59, 0x97, 0x92, 0x02, 0x09, 0xff,
0x59, 0xcf, 0xae, 0x07, 0xc1, 0x49, 0x44, 0xf3, 0x61, 0xca, 0xf6, 0x69, 0x4a, 0x07, 0xdc, 0xa6,
0xd2, 0x0b, 0x0f, 0xc7, 0x09, 0x53, 0x0a, 0x33, 0x20, 0xe8, 0x43, 0x00, 0x1e, 0x53, 0x47, 0x22,
0xbf, 0x29, 0x85, 0x55, 0x24, 0x3e, 0x03, 0x09, 0x7d, 0x02, 0x0b, 0xa9, 0x91, 0x44, 0x33, 0x55,
0xa1, 0x2b, 0x13, 0xac, 0x8d, 0x89, 0xff, 0xe4, 0x41, 0xe7, 0x47, 0x34, 0x0c, 0x59, 0xae, 0xc2,
0xbd, 0x10, 0xf8, 0x01, 0xc0, 0x45, 0xc0, 0x2e, 0x55, 0x03, 0x23, 0xcb, 0x8d, 0x01, 0xe1, 0xd1,
0x2c, 0x56, 0x69, 0x70, 0xb1, 0x5b, 0x86, 0x9e, 0x09, 0xe2, 0x18, 0x59, 0xc2, 0xa2, 0xbe, 0x22,
0x21, 0xff, 0x38, 0x30, 0x41, 0x22, 0xc8, 0xc4, 0x52, 0x11, 0x91, 0x0f, 0xd1, 0x16, 0x0c, 0xff,
0xb2, 0x26, 0xf2, 0x9e, 0x4c, 0x0a, 0x45, 0x28, 0x8f, 0x6e, 0xce, 0x9f, 0x5c, 0xf4, 0xc2, 0x69,
0xf9, 0xf7, 0xc4, 0xb9, 0xa3, 0x98, 0xa6, 0xa7, 0x8d, 0x69, 0xba, 0x2a, 0x4a, 0xdd, 0x7f, 0x8e,
0xec, 0x29, 0x0e, 0xdc, 0x29, 0x4e, 0x75, 0x55, 0x32, 0x05, 0xcc, 0x97, 0x5d, 0x95, 0x5f, 0xb4,
0x79, 0xaa, 0x89, 0x69, 0x59, 0x4d, 0x8c, 0xf5, 0xa7, 0xd1, 0x82, 0xf3, 0xa7, 0xd1, 0xfa, 0xef,
0x6b, 0x30, 0x6b, 0xfc, 0xf9, 0x79, 0x70, 0x1a, 0x5f, 0x2a, 0x85, 0x70, 0x75, 0xb7, 0x4b, 0x6b,
0x9f, 0x1f, 0xe4, 0x69, 0x10, 0x9d, 0x74, 0xef, 0xea, 0x30, 0x73, 0x46, 0x55, 0x3c, 0x85, 0x7e,
0x00, 0xf3, 0x66, 0x00, 0x2f, 0xeb, 0xd3, 0x06, 0xb8, 0xbb, 0xec, 0x46, 0xaa, 0x00, 0xe3, 0x29,
0xb4, 0x05, 0x0b, 0x76, 0x80, 0xbc, 0xab, 0x09, 0x58, 0x1b, 0x5d, 0xbd, 0x61, 0x87, 0x14, 0x9e,
0x42, 0x2f, 0xa0, 0x23, 0xed, 0x4a, 0xe8, 0xa5, 0x91, 0x9e, 0x91, 0x66, 0xdc, 0xb5, 0x7b, 0xb7,
0xa2, 0xca, 0xe2, 0xa9, 0xa3, 0x19, 0xf1, 0x47, 0xf5, 0xf7, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff,
0xdd, 0x53, 0x2b, 0xff, 0xe1, 0x1e, 0x00, 0x00,
}
......@@ -29,16 +29,6 @@ func (policy *privacyPolicy) On_ShowPrivacyKey(req *types.ReqString) (types.Mess
return reply, err
}
func (policy *privacyPolicy) On_CreateUTXOs(req *privacytypes.ReqCreateUTXOs) (types.Message, error) {
policy.getWalletOperate().GetMutex().Lock()
defer policy.getWalletOperate().GetMutex().Unlock()
reply, err := policy.createUTXOs(req)
if err != nil {
bizlog.Error("createUTXOs", "err", err.Error())
}
return reply, err
}
func (policy *privacyPolicy) On_CreateTransaction(req *privacytypes.ReqCreatePrivacyTx) (types.Message, error) {
ok, err := policy.getWalletOperate().CheckWalletStatus()
if !ok {
......
......@@ -105,29 +105,6 @@ func (policy *privacyPolicy) isRescanUtxosFlagScaning() (bool, error) {
return false, nil
}
func (policy *privacyPolicy) createUTXOs(createUTXOs *privacytypes.ReqCreateUTXOs) (*types.Reply, error) {
ok, err := policy.getWalletOperate().CheckWalletStatus()
if !ok {
return nil, err
}
if ok, err := policy.isRescanUtxosFlagScaning(); ok {
return nil, err
}
if createUTXOs == nil {
bizlog.Error("createUTXOs input para is nil")
return nil, types.ErrInvalidParam
}
if !checkAmountValid(createUTXOs.GetAmount()) {
bizlog.Error("not allow amount number")
return nil, types.ErrAmount
}
priv, err := policy.getPrivKeyByAddr(createUTXOs.GetSender())
if err != nil {
return nil, err
}
return policy.createUTXOsByPub2Priv(priv, createUTXOs)
}
func (policy *privacyPolicy) parseViewSpendPubKeyPair(in string) (viewPubKey, spendPubKey []byte, err error) {
src, err := common.FromHex(in)
if err != nil {
......@@ -142,54 +119,6 @@ func (policy *privacyPolicy) parseViewSpendPubKeyPair(in string) (viewPubKey, sp
return
}
//批量创建通过public2Privacy实现
func (policy *privacyPolicy) createUTXOsByPub2Priv(priv crypto.PrivKey, reqCreateUTXOs *privacytypes.ReqCreateUTXOs) (*types.Reply, error) {
viewPubSlice, spendPubSlice, err := parseViewSpendPubKeyPair(reqCreateUTXOs.GetPubkeypair())
if err != nil {
bizlog.Error("createUTXOsByPub2Priv", "parseViewSpendPubKeyPair error.", err)
return nil, err
}
operater := policy.getWalletOperate()
viewPublic := (*[32]byte)(unsafe.Pointer(&viewPubSlice[0]))
spendPublic := (*[32]byte)(unsafe.Pointer(&spendPubSlice[0]))
//因为此时是pub2priv的交易,此时不需要构造找零的输出,同时设置fee为0,也是为了简化计算
privacyOutput, err := generateOuts(viewPublic, spendPublic, nil, nil, reqCreateUTXOs.Amount, reqCreateUTXOs.Amount, 0)
if err != nil {
bizlog.Error("createUTXOsByPub2Priv", "genCustomOuts error.", err)
return nil, err
}
value := &privacytypes.Public2Privacy{
Tokenname: reqCreateUTXOs.Tokenname,
Amount: reqCreateUTXOs.Amount,
Note: reqCreateUTXOs.Note,
Output: privacyOutput,
AssetExec: reqCreateUTXOs.AssetExec,
}
action := &privacytypes.PrivacyAction{
Ty: privacytypes.ActionPublic2Privacy,
Value: &privacytypes.PrivacyAction_Public2Privacy{Public2Privacy: value},
}
tx := &types.Transaction{
Execer: []byte(types.ExecName(privacytypes.PrivacyX)),
Payload: types.Encode(action),
Nonce: operater.Nonce(),
To: address.ExecAddress(privacytypes.PrivacyX),
}
txSize := types.Size(tx) + types.SignatureSize
realFee := int64((txSize+1023)>>types.Size1Kshiftlen) * types.GInt("MinFee")
tx.Fee = realFee
tx.Sign(int32(operater.GetSignType()), priv)
reply, err := operater.GetAPI().SendTx(tx)
if err != nil {
bizlog.Error("transPub2PriV2", "Send err", err)
return nil, err
}
return reply, nil
}
func (policy *privacyPolicy) getPrivKeyByAddr(addr string) (crypto.PrivKey, error) {
//获取指定地址在钱包里的账户信息
Accountstor, err := policy.store.getAccountByAddr(addr)
......
......@@ -328,38 +328,6 @@ func Test_ShowPrivacyKey(t *testing.T) {
}
}
func Test_CreateUTXOs(t *testing.T) {
mock := &testDataMock{mockMempool: true}
mock.init()
mock.enablePrivacy()
testCases := []struct {
req *ty.ReqCreateUTXOs
needReply *types.Reply
needError error
}{
{
needError: types.ErrInvalidParam,
},
{
req: &ty.ReqCreateUTXOs{
AssetExec: "coins",
Tokenname: types.BTY,
Amount: 10 * types.Coin,
Note: "say something",
Sender: testAddrs[0],
Pubkeypair: testPubkeyPairs[0],
},
needError: types.ErrAddrNotExist,
},
}
for index, testCase := range testCases {
_, getErr := mock.wallet.GetAPI().ExecWalletFunc(ty.PrivacyX, "CreateUTXOs", testCase.req)
require.Equalf(t, getErr, testCase.needError, "CreateUTXOs test case index %d", index)
}
}
func Test_CreateTransaction(t *testing.T) {
mock := &testDataMock{
mockMempool: true,
......
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