Commit 143311fe authored by liuyuhang's avatar liuyuhang

modify

parent 28de2d98
...@@ -131,7 +131,7 @@ returnAddr="1KcCVZLSQYRUwE5EXTsAoQs9LuJW6xwfQa" ...@@ -131,7 +131,7 @@ returnAddr="1KcCVZLSQYRUwE5EXTsAoQs9LuJW6xwfQa"
count=10000 count=10000
[store] [store]
name="mavl" name="kvmvccmavl"
driver="leveldb" driver="leveldb"
dbPath="datadir/mavltree" dbPath="datadir/mavltree"
dbCache=128 dbCache=128
......
...@@ -1092,6 +1092,31 @@ func (bs *BlockStore) SetUpgradeMeta(meta *types.UpgradeMeta) error { ...@@ -1092,6 +1092,31 @@ func (bs *BlockStore) SetUpgradeMeta(meta *types.UpgradeMeta) error {
return bs.db.SetSync(version.LocalDBMeta, verByte) return bs.db.SetSync(version.LocalDBMeta, verByte)
} }
//SetStoreUpgradeMeta 获取存在blockchain中的Store的数据库版本号
func (bs *BlockStore) GetStoreUpgradeMeta() (*types.UpgradeMeta, error) {
ver := types.UpgradeMeta{}
version, err := bs.db.Get(version.StoreDBMeta)
if err != nil && err != dbm.ErrNotFoundInDb {
return nil, err
}
if len(version) == 0 {
return &types.UpgradeMeta{Version: "0.0.0"}, nil
}
err = types.Decode(version, &ver)
if err != nil {
return nil, err
}
storeLog.Info("GetStoreUpgradeMeta", "blockchain db version", ver)
return &ver, nil
}
//SetStoreUpgradeMeta 设置blockchain中的Store的数据库版本号
func (bs *BlockStore) SetStoreUpgradeMeta(meta *types.UpgradeMeta) error {
verByte := types.Encode(meta)
storeLog.Info("SetStoreUpgradeMeta", "meta", meta)
return bs.db.SetSync(version.StoreDBMeta, verByte)
}
//isRecordBlockSequence配置的合法性检测 //isRecordBlockSequence配置的合法性检测
func (bs *BlockStore) isRecordBlockSequenceValid(chain *BlockChain) { func (bs *BlockStore) isRecordBlockSequenceValid(chain *BlockChain) {
lastHeight := bs.Height() lastHeight := bs.Height()
......
...@@ -128,7 +128,6 @@ func TestBlockChain(t *testing.T) { ...@@ -128,7 +128,6 @@ func TestBlockChain(t *testing.T) {
testWriteBlockToDbTemp(t, blockchain) testWriteBlockToDbTemp(t, blockchain)
testReadBlockToExec(t, blockchain) testReadBlockToExec(t, blockchain)
testReExecBlock(t, blockchain) testReExecBlock(t, blockchain)
testReExecBlockMsg(t, mock33, blockchain)
} }
func testProcAddBlockMsg(t *testing.T, mock33 *testnode.Chain33Mock, blockchain *blockchain.BlockChain) { func testProcAddBlockMsg(t *testing.T, mock33 *testnode.Chain33Mock, blockchain *blockchain.BlockChain) {
...@@ -1115,17 +1114,6 @@ func testWriteBlockToDbTemp(t *testing.T, chain *blockchain.BlockChain) { ...@@ -1115,17 +1114,6 @@ func testWriteBlockToDbTemp(t *testing.T, chain *blockchain.BlockChain) {
func testReExecBlock(t *testing.T, chain *blockchain.BlockChain) { func testReExecBlock(t *testing.T, chain *blockchain.BlockChain) {
chainlog.Info("ReExecBlock begin ---------------------") chainlog.Info("ReExecBlock begin ---------------------")
curheight := chain.GetBlockHeight() curheight := chain.GetBlockHeight()
chain.ProcessReExecBlock(0, curheight) chain.ReExecBlock(0, curheight)
chainlog.Info("ReExecBlock end ---------------------") chainlog.Info("ReExecBlock end ---------------------")
} }
func testReExecBlockMsg(t *testing.T, mock33 *testnode.Chain33Mock, chain *blockchain.BlockChain) {
var err error
client := mock33.GetClient()
msg1 := client.NewMessage("blockchain", types.EventReExecBlock, &types.ReqInt{Height: 8})
err = client.Send(msg1, true)
require.NoError(t, err)
_, err = client.Wait(msg1)
require.NoError(t, err)
time.Sleep(time.Millisecond * 20)
}
...@@ -90,8 +90,6 @@ func (chain *BlockChain) ProcRecvMsg() { ...@@ -90,8 +90,6 @@ func (chain *BlockChain) ProcRecvMsg() {
case types.EventGetSeqCBLastNum: case types.EventGetSeqCBLastNum:
go chain.processMsg(msg, reqnum, chain.getSeqCBLastNum) go chain.processMsg(msg, reqnum, chain.getSeqCBLastNum)
case types.EventReExecBlock:
go chain.processMsg(msg, reqnum, chain.reExecBlock)
default: default:
go chain.processMsg(msg, reqnum, chain.unknowMsg) go chain.processMsg(msg, reqnum, chain.unknowMsg)
} }
...@@ -135,17 +133,6 @@ func (chain *BlockChain) getSeqCBLastNum(msg *queue.Message) { ...@@ -135,17 +133,6 @@ func (chain *BlockChain) getSeqCBLastNum(msg *queue.Message) {
msg.Reply(chain.client.NewMessage("rpc", types.EventGetSeqCBLastNum, lastNum)) msg.Reply(chain.client.NewMessage("rpc", types.EventGetSeqCBLastNum, lastNum))
} }
func (chain *BlockChain) reExecBlock(msg *queue.Message) {
data := (msg.Data).(*types.ReqInt)
curHeight := chain.GetBlockHeight()
if curHeight < data.Height {
msg.Reply(chain.client.NewMessage("store", types.EventReExecBlock, &types.ReplyString{Data: "none"}))
return
}
msg.Reply(chain.client.NewMessage("store", types.EventReExecBlock, &types.ReplyString{Data: "need"}))
chain.ProcessReExecBlock(data.Height, curHeight)
}
func (chain *BlockChain) queryTx(msg *queue.Message) { func (chain *BlockChain) queryTx(msg *queue.Message) {
txhash := (msg.Data).(*types.ReqHash) txhash := (msg.Data).(*types.ReqHash)
TransactionDetail, err := chain.ProcQueryTxMsg(txhash.Hash) TransactionDetail, err := chain.ProcQueryTxMsg(txhash.Hash)
......
...@@ -10,8 +10,6 @@ import ( ...@@ -10,8 +10,6 @@ import (
"math/big" "math/big"
"sync/atomic" "sync/atomic"
"fmt"
"github.com/33cn/chain33/client/api" "github.com/33cn/chain33/client/api"
"github.com/33cn/chain33/common" "github.com/33cn/chain33/common"
"github.com/33cn/chain33/common/difficulty" "github.com/33cn/chain33/common/difficulty"
...@@ -601,40 +599,6 @@ func (b *BlockChain) ProcessDelParaChainBlock(broadcast bool, blockdetail *types ...@@ -601,40 +599,6 @@ func (b *BlockChain) ProcessDelParaChainBlock(broadcast bool, blockdetail *types
return nil, true, false, nil return nil, true, false, nil
} }
// ProcessReExecBlock 从对应高度本地重新执行区块
func (b *BlockChain) ProcessReExecBlock(startHeight, curHeight int64) {
var prevStateHash []byte
if startHeight > 0 {
blockdetail, err := b.GetBlock(startHeight - 1)
if err != nil {
panic(fmt.Sprintf("get height=%d err, this not allow fail", startHeight-1))
}
prevStateHash = blockdetail.Block.StateHash
}
for i := startHeight; i <= curHeight; i++ {
blockdetail, err := b.GetBlock(i)
if err != nil {
panic(fmt.Sprintf("get height=%d err, this not allow fail", i))
}
block := blockdetail.Block
err = execBlockUpgrade(b.client, prevStateHash, block, false)
if err != nil {
panic(fmt.Sprintf("execBlockEx height=%d err=%s, this not allow fail", i, err.Error()))
}
prevStateHash = block.StateHash
}
// 通知执行结束
msg := b.client.NewMessage("store", types.EventReExecBlock, &types.ReplyString{Data: "over"})
err := b.client.Send(msg, true)
if err != nil {
return
}
_, err = b.client.Wait(msg)
if err != nil {
return
}
}
// IsRecordFaultErr 检测此错误是否要记录到故障错误中 // IsRecordFaultErr 检测此错误是否要记录到故障错误中
func IsRecordFaultErr(err error) bool { func IsRecordFaultErr(err error) bool {
return err != types.ErrFutureBlock && !api.IsGrpcError(err) && !api.IsQueueError(err) return err != types.ErrFutureBlock && !api.IsGrpcError(err) && !api.IsQueueError(err)
......
...@@ -29,7 +29,7 @@ func (chain *BlockChain) UpgradeChain() { ...@@ -29,7 +29,7 @@ func (chain *BlockChain) UpgradeChain() {
} }
if chain.needReIndex(meta) { if chain.needReIndex(meta) {
//如果没有开始重建index,那么先del all keys //如果没有开始重建index,那么先del all keys
if !meta.Indexing { if !meta.Starting {
chainlog.Info("begin del all keys") chainlog.Info("begin del all keys")
chain.blockStore.delAllKeys() chain.blockStore.delAllKeys()
chainlog.Info("end del all keys") chainlog.Info("end del all keys")
...@@ -38,7 +38,7 @@ func (chain *BlockChain) UpgradeChain() { ...@@ -38,7 +38,7 @@ func (chain *BlockChain) UpgradeChain() {
//reindex 的过程中,会每个高度都去更新meta //reindex 的过程中,会每个高度都去更新meta
chain.reIndex(start, curheight) chain.reIndex(start, curheight)
meta := &types.UpgradeMeta{ meta := &types.UpgradeMeta{
Indexing: false, Starting: false,
Version: version.GetLocalDBVersion(), Version: version.GetLocalDBVersion(),
Height: 0, Height: 0,
} }
...@@ -59,7 +59,7 @@ func (chain *BlockChain) reIndex(start, end int64) { ...@@ -59,7 +59,7 @@ func (chain *BlockChain) reIndex(start, end int64) {
} }
func (chain *BlockChain) needReIndex(meta *types.UpgradeMeta) bool { func (chain *BlockChain) needReIndex(meta *types.UpgradeMeta) bool {
if meta.Indexing { //正在index if meta.Starting { //正在index
return true return true
} }
v1 := meta.Version v1 := meta.Version
...@@ -89,7 +89,7 @@ func (chain *BlockChain) reIndexOne(height int64) error { ...@@ -89,7 +89,7 @@ func (chain *BlockChain) reIndexOne(height int64) error {
panic(err) panic(err)
} }
meta := &types.UpgradeMeta{ meta := &types.UpgradeMeta{
Indexing: true, Starting: true,
Version: version.GetLocalDBVersion(), Version: version.GetLocalDBVersion(),
Height: height + 1, Height: height + 1,
} }
......
...@@ -202,6 +202,8 @@ dbPath="datadir/mavltree" ...@@ -202,6 +202,8 @@ dbPath="datadir/mavltree"
dbCache=128 dbCache=128
# 数据库版本 # 数据库版本
localdbVersion="1.0.0" localdbVersion="1.0.0"
# 状态数据库版本
storedbVersion="1.0.0"
[store.sub.mavl] [store.sub.mavl]
# 是否使能mavl加前缀 # 是否使能mavl加前缀
......
...@@ -12,8 +12,10 @@ var ( ...@@ -12,8 +12,10 @@ var (
WalletVerKey = []byte("WalletVerKey") WalletVerKey = []byte("WalletVerKey")
BlockChainVerKey = []byte("BlockChainVerKey") BlockChainVerKey = []byte("BlockChainVerKey")
LocalDBMeta = []byte("LocalDBMeta") LocalDBMeta = []byte("LocalDBMeta")
StoreDBMeta = []byte("StoreDBMeta")
MavlTreeVerKey = []byte("MavlTreeVerKey") MavlTreeVerKey = []byte("MavlTreeVerKey")
localversion = "1.0.0" localversion = "1.0.0"
storeversion = "1.0.0"
appversion = "1.0.0" appversion = "1.0.0"
GitCommit string GitCommit string
) )
...@@ -49,6 +51,22 @@ func SetLocalDBVersion(version string) { ...@@ -49,6 +51,22 @@ func SetLocalDBVersion(version string) {
} }
} }
//GetStoreDBVersion 数据库版本解析
/*
格式: v1.v2.v3
如果: v1 升级了, 那么意味着localdb 需要 重新 reindex
*/
func GetStoreDBVersion() string {
return localversion
}
//SetStoreDBVersion 通过设置版本号,强制重建数据库
func SetStoreDBVersion(version string) {
if version != "" {
localversion = version
}
}
//GetAppVersion 获取应用 app 的版本 //GetAppVersion 获取应用 app 的版本
func GetAppVersion() string { func GetAppVersion() string {
return appversion return appversion
......
...@@ -160,26 +160,6 @@ func decodeTx(hexstr string) (*types.Transaction, error) { ...@@ -160,26 +160,6 @@ func decodeTx(hexstr string) (*types.Transaction, error) {
return &tx, nil return &tx, nil
} }
// SendRawTransaction send rawtransaction by p2p
func (c *channelClient) SendRawTransaction(param *types.SignedTx) (*types.Reply, error) {
if param == nil {
err := types.ErrInvalidParam
log.Error("SendRawTransaction", "Error", err)
return nil, err
}
var tx types.Transaction
err := types.Decode(param.GetUnsign(), &tx)
if err == nil {
tx.Signature = &types.Signature{
Ty: param.GetTy(),
Pubkey: param.GetPubkey(),
Signature: param.GetSign(),
}
return c.SendTx(&tx)
}
return nil, err
}
// GetAddrOverview get overview of address // GetAddrOverview get overview of address
func (c *channelClient) GetAddrOverview(parm *types.ReqAddr) (*types.AddrOverview, error) { func (c *channelClient) GetAddrOverview(parm *types.ReqAddr) (*types.AddrOverview, error) {
err := address.CheckAddress(parm.Addr) err := address.CheckAddress(parm.Addr)
......
...@@ -80,11 +80,6 @@ func (g *Grpc) CreateRawTxGroup(ctx context.Context, in *pb.CreateTransactionGro ...@@ -80,11 +80,6 @@ func (g *Grpc) CreateRawTxGroup(ctx context.Context, in *pb.CreateTransactionGro
return &pb.UnsignTx{Data: reply}, nil return &pb.UnsignTx{Data: reply}, nil
} }
// SendRawTransaction send rawtransaction
func (g *Grpc) SendRawTransaction(ctx context.Context, in *pb.SignedTx) (*pb.Reply, error) {
return g.cli.SendRawTransaction(in)
}
// QueryTransaction query transaction by grpc // QueryTransaction query transaction by grpc
func (g *Grpc) QueryTransaction(ctx context.Context, in *pb.ReqHash) (*pb.TransactionDetail, error) { func (g *Grpc) QueryTransaction(ctx context.Context, in *pb.ReqHash) (*pb.TransactionDetail, error) {
return g.cli.QueryTx(in) return g.cli.QueryTx(in)
......
...@@ -8,7 +8,6 @@ import ( ...@@ -8,7 +8,6 @@ import (
"context" "context"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"fmt"
"time" "time"
"github.com/33cn/chain33/common" "github.com/33cn/chain33/common"
...@@ -83,36 +82,6 @@ func (c *Chain33) CreateNoBalanceTransaction(in *types.NoBalanceTx, result *stri ...@@ -83,36 +82,6 @@ func (c *Chain33) CreateNoBalanceTransaction(in *types.NoBalanceTx, result *stri
return nil return nil
} }
// SendRawTransaction send rawtransacion
func (c *Chain33) SendRawTransaction(in rpctypes.SignedTx, result *interface{}) error {
var stx types.SignedTx
var err error
stx.Pubkey, err = hex.DecodeString(in.Pubkey)
if err != nil {
return err
}
stx.Sign, err = hex.DecodeString(in.Sign)
if err != nil {
return err
}
stx.Unsign, err = hex.DecodeString(in.Unsign)
if err != nil {
return err
}
stx.Ty = in.Ty
reply, err := c.cli.SendRawTransaction(&stx)
if err != nil {
return err
}
if reply.IsOk {
*result = "0x" + hex.EncodeToString(reply.Msg)
return nil
}
return fmt.Errorf(string(reply.Msg))
}
// SendTransaction send transaction // SendTransaction send transaction
func (c *Chain33) SendTransaction(in rpctypes.RawParm, result *interface{}) error { func (c *Chain33) SendTransaction(in rpctypes.RawParm, result *interface{}) error {
var parm types.Transaction var parm types.Transaction
......
...@@ -86,9 +86,6 @@ func (store *BaseStore) SetQueueClient(c queue.Client) { ...@@ -86,9 +86,6 @@ func (store *BaseStore) SetQueueClient(c queue.Client) {
} }
store.done <- struct{}{} store.done <- struct{}{}
}() }()
if store.child != nil {
store.child.ProcEvent(nil)
}
} }
//Wait wait for basestore ready //Wait wait for basestore ready
......
...@@ -81,6 +81,8 @@ type Consensus struct { ...@@ -81,6 +81,8 @@ type Consensus struct {
Genesis string `protobuf:"bytes,4,opt,name=genesis" json:"genesis,omitempty"` Genesis string `protobuf:"bytes,4,opt,name=genesis" json:"genesis,omitempty"`
HotkeyAddr string `protobuf:"bytes,5,opt,name=hotkeyAddr" json:"hotkeyAddr,omitempty"` HotkeyAddr string `protobuf:"bytes,5,opt,name=hotkeyAddr" json:"hotkeyAddr,omitempty"`
ForceMining bool `protobuf:"varint,6,opt,name=forceMining" json:"forceMining,omitempty"` ForceMining bool `protobuf:"varint,6,opt,name=forceMining" json:"forceMining,omitempty"`
// 配置挖矿的合约名单
MinerExecs []string `protobuf:"bytes,7,rep,name=minerExecs" json:"minerExecs,omitempty"`
} }
// Wallet 配置 // Wallet 配置
...@@ -109,6 +111,8 @@ type Store struct { ...@@ -109,6 +111,8 @@ type Store struct {
DbCache int32 `protobuf:"varint,4,opt,name=dbCache" json:"dbCache,omitempty"` DbCache int32 `protobuf:"varint,4,opt,name=dbCache" json:"dbCache,omitempty"`
// 数据库版本 // 数据库版本
LocalDBVersion string `protobuf:"bytes,5,opt,name=localdbVersion" json:"localdbVersion,omitempty"` LocalDBVersion string `protobuf:"bytes,5,opt,name=localdbVersion" json:"localdbVersion,omitempty"`
// 数据库版本
StoreDBVersion string `protobuf:"bytes,5,opt,name=storedbVersion" json:"storedbVersion,omitempty"`
} }
// BlockChain 配置 // BlockChain 配置
......
...@@ -20,8 +20,6 @@ service chain33 { ...@@ -20,8 +20,6 @@ service chain33 {
//交易接口 //交易接口
rpc CreateRawTransaction(CreateTx) returns (UnsignTx) {} rpc CreateRawTransaction(CreateTx) returns (UnsignTx) {}
rpc CreateRawTxGroup(CreateTransactionGroup) returns (UnsignTx) {} rpc CreateRawTxGroup(CreateTransactionGroup) returns (UnsignTx) {}
//发送签名后交易
rpc SendRawTransaction(SignedTx) returns (Reply) {}
// 根据哈希查询交易 // 根据哈希查询交易
rpc QueryTransaction(ReqHash) returns (TransactionDetail) {} rpc QueryTransaction(ReqHash) returns (TransactionDetail) {}
// 发送交易 // 发送交易
......
...@@ -76,13 +76,6 @@ message NoBalanceTx { ...@@ -76,13 +76,6 @@ message NoBalanceTx {
string expire = 4; string expire = 4;
} }
message SignedTx {
bytes unsign = 1;
bytes sign = 2;
bytes pubkey = 3;
int32 ty = 4;
}
message Transaction { message Transaction {
bytes execer = 1; bytes execer = 1;
bytes payload = 2; bytes payload = 2;
...@@ -244,7 +237,7 @@ message UserWrite { ...@@ -244,7 +237,7 @@ message UserWrite {
} }
message UpgradeMeta { message UpgradeMeta {
bool indexing = 1; bool starting = 1;
string version = 2; string version = 2;
int64 height = 3; int64 height = 3;
} }
\ No newline at end of file
...@@ -26,74 +26,74 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package ...@@ -26,74 +26,74 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) } func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{ var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 1068 bytes of a gzipped FileDescriptorProto // 1057 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0x6d, 0x6f, 0xdb, 0x36, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0x6d, 0x6f, 0xdb, 0x36,
0x10, 0xd6, 0x87, 0xad, 0x69, 0x58, 0x27, 0x71, 0x98, 0x34, 0x6b, 0x85, 0x15, 0x05, 0x04, 0x0c, 0x10, 0xd6, 0x87, 0xad, 0x69, 0x58, 0x27, 0x71, 0x98, 0x34, 0x68, 0x85, 0x15, 0x05, 0x04, 0x0c,
0x1b, 0x30, 0xd4, 0x6e, 0xed, 0x2d, 0x7b, 0x29, 0x36, 0x20, 0x4e, 0x66, 0xc7, 0x58, 0xea, 0xa5, 0x1b, 0x30, 0xd4, 0x6e, 0xed, 0x35, 0x7b, 0x29, 0x36, 0x20, 0x4e, 0x66, 0xc7, 0x98, 0xeb, 0xb9,
0x91, 0xbb, 0x01, 0xfb, 0x46, 0xcb, 0x37, 0x47, 0x88, 0x4c, 0x2a, 0x24, 0x15, 0xcb, 0xbf, 0x66, 0x91, 0xbb, 0x01, 0xfb, 0x46, 0xcb, 0x37, 0x47, 0x88, 0x4c, 0x2a, 0x24, 0x15, 0xdb, 0xff, 0x78,
0x7f, 0x75, 0x20, 0x25, 0xea, 0xdd, 0x49, 0xf6, 0x4d, 0xbc, 0xbb, 0xe7, 0x5e, 0xc4, 0xe7, 0xee, 0x3f, 0x63, 0x20, 0x25, 0xea, 0xdd, 0x49, 0xf6, 0x4d, 0xbc, 0xbb, 0xe7, 0xee, 0xc8, 0x7b, 0xee,
0x88, 0xb6, 0x79, 0xe8, 0x75, 0x42, 0xce, 0x24, 0xc3, 0x9f, 0xcb, 0x75, 0x08, 0xc2, 0x6e, 0x79, 0x4e, 0x68, 0x97, 0x87, 0x5e, 0x2b, 0xe4, 0x4c, 0x32, 0xfc, 0xa5, 0xdc, 0x84, 0x20, 0xec, 0x86,
0x6c, 0xb9, 0x64, 0x34, 0x11, 0xda, 0xfb, 0x92, 0x13, 0x2a, 0x88, 0x27, 0xfd, 0x4c, 0xd4, 0x9e, 0xc7, 0x96, 0x4b, 0x46, 0x63, 0xa1, 0x7d, 0x28, 0x39, 0xa1, 0x82, 0x78, 0xd2, 0x4f, 0x45, 0xcd,
0x05, 0xcc, 0xbb, 0xf1, 0xae, 0x89, 0x6f, 0x24, 0xad, 0x15, 0x09, 0x02, 0x90, 0xe9, 0x69, 0x3b, 0x59, 0xc0, 0xbc, 0x1b, 0xef, 0x9a, 0xf8, 0x46, 0xd2, 0x58, 0x91, 0x20, 0x00, 0x99, 0x9c, 0x76,
0xec, 0x85, 0xe9, 0xe7, 0x0e, 0xf1, 0x3c, 0x16, 0x51, 0xa3, 0xd9, 0x85, 0x18, 0xbc, 0x48, 0x32, 0xc3, 0x4e, 0x98, 0x7c, 0xee, 0x11, 0xcf, 0x63, 0x11, 0x35, 0x9a, 0x7d, 0x58, 0x83, 0x17, 0x49,
0x9e, 0x9c, 0x7b, 0xff, 0x7e, 0x81, 0xb6, 0xb4, 0x9f, 0x7e, 0x1f, 0xbf, 0x41, 0xdb, 0x23, 0x90, 0xc6, 0xe3, 0x73, 0xe7, 0xdf, 0x13, 0xb4, 0xa3, 0xfd, 0x74, 0xbb, 0xf8, 0x0d, 0xda, 0x1d, 0x80,
0x03, 0xe5, 0x5a, 0xe0, 0x76, 0x47, 0xe7, 0xd2, 0xb9, 0x82, 0xdb, 0x44, 0x62, 0xb7, 0x32, 0x49, 0xec, 0x29, 0xd7, 0x02, 0x37, 0x5b, 0x3a, 0x97, 0xd6, 0x15, 0xdc, 0xc6, 0x12, 0xbb, 0x91, 0x4a,
0x18, 0xac, 0x1d, 0x0b, 0x77, 0xd1, 0xce, 0x08, 0xe4, 0x05, 0x11, 0xf2, 0x1c, 0xc8, 0x1c, 0x38, 0xc2, 0x60, 0xe3, 0x58, 0xb8, 0x8d, 0xf6, 0x06, 0x20, 0x47, 0x44, 0xc8, 0x4b, 0x20, 0x73, 0xe0,
0xde, 0xc9, 0x21, 0x13, 0x3f, 0xb0, 0xcd, 0x31, 0xd1, 0x3a, 0x16, 0xfe, 0x19, 0x1d, 0x9e, 0x72, 0x78, 0x2f, 0x83, 0x8c, 0xfd, 0xc0, 0x36, 0xc7, 0x58, 0xeb, 0x58, 0xf8, 0x67, 0x74, 0x7c, 0xce,
0x20, 0x12, 0xae, 0xc8, 0x6a, 0x9a, 0xd7, 0x84, 0xf7, 0x52, 0xc3, 0x44, 0x39, 0x8d, 0x6d, 0x23, 0x81, 0x48, 0xb8, 0x22, 0xab, 0x69, 0x76, 0x27, 0x7c, 0x90, 0x18, 0xc6, 0xca, 0xe9, 0xda, 0x36,
0xf8, 0x44, 0x85, 0xbf, 0xa0, 0xd3, 0xd8, 0xb1, 0xf0, 0x19, 0x6a, 0xe7, 0xd8, 0x78, 0xc4, 0x59, 0x82, 0xcf, 0x54, 0xf8, 0x0b, 0x3a, 0x5d, 0x3b, 0x16, 0xbe, 0x40, 0xcd, 0x0c, 0xbb, 0x1e, 0x70,
0x14, 0xe2, 0x57, 0x65, 0x5c, 0xee, 0x51, 0xab, 0x9b, 0xbc, 0x7c, 0x8f, 0xb0, 0x0b, 0x74, 0xbe, 0x16, 0x85, 0xf8, 0x55, 0x11, 0x97, 0x79, 0xd4, 0xea, 0x3a, 0x2f, 0xbf, 0xa2, 0xe6, 0xa7, 0x08,
0x21, 0xbe, 0xeb, 0x2f, 0x28, 0xcc, 0xa7, 0x71, 0xad, 0xd2, 0x5f, 0x51, 0xfb, 0x63, 0x04, 0x7c, 0xf8, 0x26, 0x1f, 0x7d, 0x3f, 0xcb, 0xfa, 0x92, 0x88, 0x6b, 0xfb, 0x45, 0x72, 0xce, 0xd9, 0x5c,
0x5d, 0x04, 0xed, 0xe6, 0xc5, 0x9e, 0x13, 0x71, 0x6d, 0xbf, 0x48, 0xcf, 0x05, 0x9b, 0x33, 0x90, 0x80, 0x24, 0x7e, 0xe0, 0x58, 0xf8, 0x3d, 0x3a, 0x70, 0x81, 0xce, 0xf3, 0x70, 0x5c, 0x35, 0xaf,
0xc4, 0x0f, 0x74, 0xd8, 0x3d, 0x15, 0xb6, 0x08, 0xc7, 0x75, 0xf3, 0x5a, 0xd8, 0x5f, 0xd0, 0xe1, 0xbc, 0xd4, 0x2f, 0xe8, 0x78, 0x00, 0x32, 0x67, 0xd1, 0xdb, 0x9c, 0xcd, 0xe7, 0x3c, 0x1f, 0x5a,
0x08, 0x64, 0xc1, 0x62, 0xb0, 0x3e, 0x99, 0xcf, 0x79, 0x31, 0xb4, 0x3a, 0xdb, 0x07, 0x45, 0xdc, 0x9d, 0xed, 0xa3, 0x3c, 0x6e, 0xba, 0x1e, 0xd2, 0x7f, 0x98, 0x70, 0x2c, 0x3c, 0x40, 0x27, 0x65,
0x34, 0x1e, 0xd3, 0x7f, 0x98, 0x70, 0x2c, 0x3c, 0x42, 0x47, 0x55, 0xb8, 0xca, 0x14, 0x4a, 0x77, 0xb8, 0xca, 0x14, 0x0a, 0x45, 0x8a, 0x25, 0xf6, 0xcb, 0x6d, 0xd9, 0x2b, 0x47, 0xef, 0x10, 0x1a,
0x9b, 0x48, 0xec, 0x97, 0x9b, 0xb2, 0x57, 0x8e, 0xde, 0x21, 0x34, 0x02, 0xf9, 0x01, 0x96, 0x97, 0x80, 0xfc, 0x08, 0xcb, 0x09, 0x63, 0x41, 0xb9, 0x5c, 0xb8, 0x18, 0x7c, 0xe4, 0x0b, 0xa9, 0x6f,
0x8c, 0x05, 0xd5, 0x5b, 0xc6, 0xe5, 0xe0, 0x17, 0xbe, 0x90, 0xba, 0xe2, 0x67, 0x23, 0x90, 0x27, 0xfc, 0x6c, 0x00, 0xf2, 0x2c, 0xe6, 0x90, 0x28, 0x63, 0x9e, 0x27, 0xc7, 0xbf, 0x34, 0xf9, 0x8c,
0x09, 0xf5, 0x44, 0x15, 0xf3, 0x3c, 0x3d, 0xfe, 0xa5, 0x39, 0x6b, 0xac, 0x34, 0x43, 0xd0, 0x04, 0x95, 0x2e, 0x35, 0x1a, 0xc3, 0x2a, 0x11, 0xe0, 0xe3, 0x1c, 0x2a, 0x95, 0xda, 0xc7, 0x75, 0x60,
0x56, 0xa9, 0x00, 0x1f, 0x16, 0x50, 0x99, 0xd4, 0x3e, 0x6c, 0x02, 0x3b, 0x16, 0xbe, 0x42, 0xcf, 0xc7, 0xc2, 0x57, 0xe8, 0x79, 0x2c, 0xca, 0xdd, 0x41, 0x65, 0x83, 0x5f, 0x67, 0x6e, 0x6a, 0x0d,
0x13, 0x51, 0xa1, 0x06, 0x95, 0x0d, 0x7e, 0x9d, 0xbb, 0x69, 0x34, 0xb0, 0x8f, 0x4a, 0x1e, 0xa7, 0xec, 0x93, 0x82, 0xc7, 0xe9, 0x3a, 0xbb, 0x79, 0x1f, 0xed, 0x0d, 0x97, 0x21, 0xe3, 0x72, 0xc2,
0x71, 0x5e, 0xf9, 0x10, 0xed, 0x8c, 0x97, 0x21, 0xe3, 0xf2, 0x92, 0xfb, 0x77, 0x37, 0xb0, 0xce, 0xfd, 0xbb, 0x1b, 0xd8, 0xa4, 0xdc, 0x49, 0x7d, 0x15, 0xd4, 0x5b, 0x73, 0xeb, 0xa1, 0x3d, 0x4d,
0x28, 0x97, 0xf9, 0x2a, 0xa9, 0x37, 0xe6, 0x36, 0x40, 0x3b, 0x9a, 0x00, 0x4c, 0xdd, 0x17, 0x08, 0x00, 0xa6, 0xea, 0x05, 0x42, 0x54, 0xfd, 0x14, 0xd4, 0x76, 0x33, 0xff, 0xa8, 0xaa, 0x44, 0x8e,
0x51, 0xf7, 0x53, 0x52, 0xdb, 0xed, 0xe2, 0x4f, 0x55, 0x57, 0xe4, 0x58, 0xb8, 0x87, 0x9e, 0xba, 0x85, 0x3b, 0xe8, 0xa9, 0xab, 0xb2, 0xeb, 0x03, 0xe0, 0x93, 0x2a, 0x5c, 0xf6, 0x01, 0x2a, 0x0c,
0x2a, 0xbb, 0x21, 0x00, 0x3e, 0xaa, 0xc3, 0xe5, 0x10, 0xa0, 0xc6, 0xa0, 0xf7, 0x68, 0xcb, 0x55, 0xfa, 0x80, 0x76, 0x5c, 0xd5, 0x6b, 0xb3, 0x00, 0xbf, 0xa8, 0x81, 0x8c, 0xc8, 0x0c, 0x82, 0x7b,
0x2d, 0x3a, 0x0b, 0xf0, 0x8b, 0x06, 0xc8, 0x05, 0x99, 0x41, 0x70, 0x4f, 0xd2, 0xad, 0x0f, 0xc0, 0x92, 0x6e, 0x7c, 0x04, 0xbe, 0x80, 0x1e, 0x09, 0x08, 0xf5, 0x00, 0x7f, 0x55, 0xf6, 0x90, 0xd7,
0x17, 0x30, 0x20, 0x01, 0xa1, 0x1e, 0xe0, 0x2f, 0xab, 0x1e, 0x8a, 0xda, 0x32, 0x0f, 0x12, 0x56, 0x16, 0x79, 0x10, 0xb3, 0xca, 0xb1, 0xf0, 0x29, 0xda, 0x75, 0x41, 0x4e, 0x88, 0x10, 0xab, 0x39,
0x39, 0x16, 0x3e, 0x46, 0xdb, 0x2e, 0xc8, 0x4b, 0x22, 0xc4, 0x6a, 0x8e, 0x5f, 0x36, 0xa4, 0x90, 0x7e, 0x59, 0x93, 0x42, 0xac, 0xaa, 0x24, 0xfe, 0x35, 0xfa, 0x62, 0xc4, 0xbc, 0x9b, 0x32, 0x71,
0xa8, 0x6a, 0x89, 0x7f, 0x85, 0x3e, 0xbb, 0x60, 0xde, 0x4d, 0x95, 0x38, 0x55, 0xb3, 0x37, 0xe8, 0xca, 0x66, 0x6f, 0xd0, 0x93, 0xcf, 0x54, 0x1b, 0x1e, 0x15, 0x2e, 0x11, 0x0b, 0x6b, 0x46, 0x8f,
0xc9, 0x27, 0xaa, 0x0d, 0x0f, 0x4a, 0x45, 0x24, 0xc2, 0x86, 0x89, 0xa5, 0x58, 0x79, 0x09, 0xc0, 0x62, 0xe5, 0x04, 0x80, 0xab, 0x1e, 0x29, 0x3b, 0x37, 0x8d, 0xaf, 0xf4, 0x29, 0x8d, 0xf7, 0x93,
0x55, 0x8f, 0x54, 0x9d, 0x9b, 0x31, 0xa0, 0xf4, 0x19, 0x8d, 0x77, 0xd3, 0x11, 0xf7, 0xbf, 0xd8, 0x59, 0xf5, 0xbf, 0xd8, 0x7f, 0x8a, 0x1a, 0x2a, 0x0e, 0x67, 0x21, 0x70, 0x55, 0xae, 0x2d, 0xf4,
0x7f, 0x8c, 0x5a, 0x2a, 0x0e, 0x67, 0x21, 0x70, 0x75, 0x5d, 0x1b, 0xe8, 0xaf, 0x41, 0x99, 0x95, 0xd7, 0xa0, 0xd4, 0xca, 0xb1, 0xf0, 0x0f, 0xe8, 0x60, 0x00, 0x32, 0x79, 0x1b, 0x49, 0x64, 0x54,
0x63, 0xe1, 0x1f, 0xd0, 0xde, 0x08, 0x64, 0xfa, 0x6f, 0x24, 0x91, 0x51, 0xad, 0x73, 0xca, 0x65, 0xe9, 0x9c, 0xe2, 0x35, 0x63, 0x1b, 0xdd, 0x37, 0x4d, 0x33, 0x82, 0xff, 0xb8, 0x03, 0x7e, 0xe7,
0x26, 0x36, 0xba, 0x6f, 0xda, 0x66, 0x72, 0xff, 0x71, 0x07, 0xfc, 0xce, 0x87, 0x55, 0x6d, 0x40, 0xc3, 0xaa, 0x32, 0xa0, 0x4c, 0x99, 0x0b, 0x56, 0x8e, 0x85, 0x7f, 0xd4, 0x41, 0x15, 0xf3, 0xea,
0x99, 0x6b, 0x2e, 0x59, 0x39, 0x16, 0xfe, 0x51, 0x07, 0x55, 0xcc, 0x6b, 0x82, 0x96, 0x06, 0x4c, 0xa0, 0x85, 0x01, 0x93, 0x37, 0xd2, 0x73, 0xa1, 0x61, 0xa2, 0xaa, 0x08, 0xf9, 0x5c, 0x87, 0x54,
0xd1, 0x48, 0xcf, 0x85, 0x96, 0x89, 0xaa, 0x22, 0x14, 0x73, 0x1d, 0x53, 0xd9, 0x48, 0xe2, 0x77, 0xd6, 0x92, 0xf8, 0x1d, 0xda, 0x19, 0x00, 0x75, 0x01, 0xe6, 0xe9, 0x04, 0x4c, 0xce, 0x23, 0x42,
0x68, 0x6b, 0x04, 0xd4, 0x05, 0x98, 0x67, 0x13, 0x30, 0x3d, 0x5f, 0x10, 0xba, 0x28, 0x43, 0x94, 0x17, 0x45, 0x88, 0x92, 0x1a, 0x88, 0x2c, 0x41, 0xf4, 0xb9, 0xb7, 0x99, 0xac, 0x6a, 0x21, 0x6d,
0xd4, 0x40, 0x64, 0x05, 0xa2, 0xcf, 0x83, 0xf5, 0xe5, 0xaa, 0x11, 0xd2, 0x45, 0x4f, 0x5d, 0x72, 0xf4, 0xd4, 0x25, 0x77, 0xa0, 0x31, 0x26, 0x77, 0x23, 0xd0, 0xa0, 0x32, 0x31, 0x3a, 0x7a, 0xc2,
0x07, 0x1a, 0x63, 0x72, 0x37, 0x02, 0x0d, 0xaa, 0x12, 0xa3, 0xa7, 0x27, 0x9c, 0x21, 0xfa, 0x7e, 0x19, 0xa2, 0x1f, 0xe6, 0x76, 0x58, 0xc2, 0x6e, 0xc3, 0x8d, 0xdc, 0xac, 0xea, 0x20, 0xa4, 0x97,
0x61, 0xf5, 0xa5, 0xec, 0x36, 0xdc, 0x28, 0xcc, 0xaa, 0x1e, 0x42, 0x7a, 0x29, 0x9c, 0xaa, 0xed, 0xc2, 0xb9, 0x5a, 0x83, 0xe9, 0xac, 0xd2, 0xa7, 0xdf, 0x92, 0x65, 0x59, 0x17, 0x47, 0xe9, 0xe2,
0x99, 0xcd, 0x2a, 0x7d, 0xfa, 0x2d, 0xdd, 0xb1, 0x4d, 0x71, 0x94, 0x2e, 0xb9, 0xbd, 0x47, 0x62, 0xea, 0x3d, 0x12, 0x73, 0x8a, 0xf6, 0xe3, 0x38, 0x8c, 0x0a, 0xa0, 0x22, 0x12, 0x8f, 0xc4, 0xfd,
0x8e, 0xd1, 0x6e, 0x12, 0x87, 0x51, 0x01, 0x54, 0x44, 0xe2, 0x91, 0xb8, 0x9f, 0xd0, 0x7e, 0x6d, 0x84, 0x0e, 0x2b, 0x1b, 0x2e, 0xbd, 0x9a, 0xd9, 0x99, 0x43, 0x5a, 0xb7, 0xef, 0xde, 0x6a, 0xda,
0x31, 0x66, 0xa5, 0x99, 0x55, 0x3b, 0xa6, 0x4d, 0x6b, 0xf2, 0xad, 0xa6, 0xfd, 0x39, 0xc4, 0xd3, 0x5f, 0xc2, 0x7a, 0xba, 0x8e, 0x77, 0x46, 0x85, 0x4c, 0x8d, 0x74, 0x49, 0xaf, 0x35, 0xe2, 0x3d,
0x38, 0xd9, 0x19, 0x35, 0x32, 0xb5, 0xb2, 0xdd, 0x1e, 0xa7, 0x8b, 0xf5, 0xd9, 0x59, 0xb4, 0x0c, 0x7a, 0x76, 0x11, 0x2d, 0x43, 0x33, 0x26, 0x73, 0x0b, 0xc6, 0x95, 0xdc, 0xa7, 0x8b, 0x62, 0xa3,
0xcd, 0x98, 0x2c, 0x2c, 0x18, 0x57, 0x72, 0x9f, 0x2e, 0xca, 0x8d, 0x92, 0xc8, 0x1c, 0x0b, 0x77, 0xc4, 0x32, 0xc7, 0xc2, 0x2d, 0xb4, 0xf3, 0x27, 0x70, 0xa1, 0x32, 0xdb, 0xd2, 0x58, 0x89, 0x5a,
0xd0, 0xd6, 0x9f, 0xc0, 0x85, 0xca, 0x6c, 0x43, 0x63, 0xa5, 0x6a, 0xd5, 0xaf, 0x8e, 0x85, 0xbf, 0xf5, 0xab, 0x63, 0xe1, 0x6f, 0xd0, 0x93, 0xa1, 0x70, 0x37, 0xd4, 0x7b, 0x68, 0x30, 0xb4, 0xd1,
0x46, 0x4f, 0xc6, 0xc2, 0x5d, 0x53, 0xef, 0xa1, 0xc1, 0xd0, 0x45, 0xbb, 0x63, 0x31, 0x91, 0xe1, 0xfe, 0x50, 0x8c, 0x65, 0x78, 0xae, 0xc8, 0xf9, 0x18, 0x40, 0x0b, 0xed, 0x8c, 0x41, 0xd6, 0x8d,
0xa9, 0x22, 0xe7, 0x63, 0x00, 0x1d, 0xb4, 0x35, 0x01, 0xd9, 0x34, 0x16, 0x4c, 0x26, 0x13, 0x36, 0x05, 0x93, 0xc9, 0x98, 0xcd, 0x21, 0x31, 0xd1, 0x4f, 0xa4, 0xba, 0xa6, 0x4f, 0x24, 0x09, 0xfa,
0x87, 0xd4, 0x44, 0xff, 0x22, 0xd5, 0x35, 0x43, 0x22, 0x49, 0x30, 0x24, 0x7e, 0x10, 0x71, 0xd8, 0xc4, 0x0f, 0x22, 0x0e, 0xdb, 0x22, 0x0c, 0xa9, 0xec, 0x76, 0xf4, 0x13, 0x1d, 0x27, 0xb3, 0x44,
0x14, 0x61, 0x4c, 0x65, 0xbf, 0xa7, 0x7f, 0xd1, 0x61, 0x3a, 0x4b, 0x74, 0xc7, 0xb8, 0x70, 0x1b, 0x77, 0x8c, 0x0b, 0xb7, 0x11, 0x28, 0xb6, 0x6d, 0x87, 0x9d, 0x7e, 0xef, 0x58, 0xb8, 0x8b, 0x0e,
0x81, 0x62, 0xdb, 0x66, 0xd8, 0xf1, 0x77, 0x8e, 0x85, 0xfb, 0x68, 0x5f, 0xd3, 0x3d, 0xb1, 0x7e, 0x35, 0xdd, 0x63, 0xeb, 0x07, 0xca, 0x61, 0x40, 0x1f, 0xb2, 0x79, 0x70, 0xcf, 0xd2, 0x3f, 0xca,
0xe0, 0x3a, 0x0c, 0xe8, 0x7d, 0x3e, 0x0f, 0xee, 0x59, 0xfa, 0x07, 0xc5, 0x89, 0x90, 0x2f, 0xbd, 0x4f, 0x84, 0x6c, 0xe9, 0xbd, 0xd5, 0x3f, 0x68, 0x09, 0xd8, 0x85, 0x5b, 0x5c, 0xf0, 0x9e, 0xf2,
0xb7, 0xfa, 0x5d, 0x97, 0x82, 0x5d, 0xb8, 0xc5, 0x25, 0xef, 0x19, 0x5f, 0x4c, 0x15, 0x8e, 0x85, 0xc5, 0xdc, 0xc2, 0xb1, 0xf0, 0x77, 0x08, 0x9d, 0x07, 0x4c, 0xc0, 0xa7, 0x08, 0x22, 0x78, 0xe8,
0xbf, 0x45, 0xe8, 0x34, 0x60, 0x02, 0x3e, 0x46, 0x10, 0xc1, 0x43, 0x7f, 0x7a, 0xa8, 0x0b, 0x3a, 0xa5, 0xfb, 0xfa, 0x42, 0x67, 0x41, 0xa0, 0x98, 0x6b, 0x5a, 0x2e, 0xb7, 0x9d, 0x8a, 0x9a, 0x74,
0x09, 0x02, 0xc5, 0x5c, 0xd3, 0x72, 0x85, 0xed, 0x54, 0xd6, 0x64, 0xc3, 0xb2, 0x2c, 0xd6, 0xfc, 0x58, 0x16, 0xc5, 0x9a, 0xdf, 0xbb, 0xae, 0xbf, 0xa0, 0xfa, 0xc7, 0x0e, 0x1f, 0xe5, 0x08, 0x67,
0xde, 0x56, 0x0f, 0x36, 0xfd, 0x1e, 0xc4, 0x07, 0x05, 0xc2, 0x19, 0x61, 0x79, 0xce, 0x66, 0x62, 0x84, 0xc5, 0x39, 0x9b, 0x8a, 0x1d, 0x0b, 0x0f, 0x91, 0x1d, 0x37, 0xc0, 0x98, 0x25, 0xfe, 0xea,
0xc7, 0xc2, 0x63, 0x64, 0x27, 0x0d, 0x30, 0x61, 0xa9, 0xbf, 0xa6, 0xa7, 0x59, 0xae, 0xbc, 0xc7, 0x7e, 0xcd, 0x32, 0xe5, 0x3d, 0xae, 0x4e, 0x51, 0x43, 0x77, 0xe7, 0x15, 0xa1, 0xf3, 0x71, 0xb4,
0xd5, 0x31, 0x6a, 0xe9, 0xee, 0xbc, 0x22, 0x74, 0x3e, 0x89, 0x96, 0x38, 0xe7, 0xf9, 0xad, 0x12, 0xc4, 0x19, 0xcf, 0x6f, 0x95, 0x48, 0x57, 0xa7, 0x6e, 0x10, 0x7e, 0xab, 0xa7, 0x5a, 0x9f, 0xf1,
0xe9, 0xdb, 0x69, 0x1a, 0x84, 0xdf, 0xe8, 0xa9, 0x36, 0x64, 0xbc, 0xb4, 0xe3, 0x7e, 0x87, 0x75, 0xc2, 0x8e, 0xfb, 0x1d, 0x36, 0xe5, 0x5a, 0xf6, 0x5e, 0xff, 0xfd, 0x6a, 0xe1, 0xcb, 0xeb, 0x68,
0xf5, 0x2e, 0x07, 0xaf, 0xff, 0x7e, 0xb5, 0xf0, 0xe5, 0x75, 0x34, 0xeb, 0x78, 0x6c, 0xd9, 0xed, 0xd6, 0xf2, 0xd8, 0xb2, 0xdd, 0xed, 0x7a, 0xb4, 0x9d, 0xfc, 0x79, 0xb7, 0xb5, 0xe1, 0xec, 0x89,
0xf7, 0x3d, 0xda, 0x4d, 0x1f, 0xec, 0x5d, 0x6d, 0x38, 0x7b, 0xa2, 0x5f, 0xf2, 0xfd, 0xff, 0x02, 0xfe, 0x25, 0xef, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x13, 0xe5, 0x27, 0xe0, 0x11, 0x0c, 0x00,
0x00, 0x00, 0xff, 0xff, 0xa5, 0x8d, 0x8a, 0xc5, 0x48, 0x0c, 0x00, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
...@@ -116,8 +116,6 @@ type Chain33Client interface { ...@@ -116,8 +116,6 @@ type Chain33Client interface {
//交易接口 //交易接口
CreateRawTransaction(ctx context.Context, in *CreateTx, opts ...grpc.CallOption) (*UnsignTx, error) CreateRawTransaction(ctx context.Context, in *CreateTx, opts ...grpc.CallOption) (*UnsignTx, error)
CreateRawTxGroup(ctx context.Context, in *CreateTransactionGroup, opts ...grpc.CallOption) (*UnsignTx, error) CreateRawTxGroup(ctx context.Context, in *CreateTransactionGroup, opts ...grpc.CallOption) (*UnsignTx, error)
//发送签名后交易
SendRawTransaction(ctx context.Context, in *SignedTx, opts ...grpc.CallOption) (*Reply, error)
// 根据哈希查询交易 // 根据哈希查询交易
QueryTransaction(ctx context.Context, in *ReqHash, opts ...grpc.CallOption) (*TransactionDetail, error) QueryTransaction(ctx context.Context, in *ReqHash, opts ...grpc.CallOption) (*TransactionDetail, error)
// 发送交易 // 发送交易
...@@ -256,15 +254,6 @@ func (c *chain33Client) CreateRawTxGroup(ctx context.Context, in *CreateTransact ...@@ -256,15 +254,6 @@ func (c *chain33Client) CreateRawTxGroup(ctx context.Context, in *CreateTransact
return out, nil return out, nil
} }
func (c *chain33Client) SendRawTransaction(ctx context.Context, in *SignedTx, opts ...grpc.CallOption) (*Reply, error) {
out := new(Reply)
err := c.cc.Invoke(ctx, "/types.chain33/SendRawTransaction", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *chain33Client) QueryTransaction(ctx context.Context, in *ReqHash, opts ...grpc.CallOption) (*TransactionDetail, error) { func (c *chain33Client) QueryTransaction(ctx context.Context, in *ReqHash, opts ...grpc.CallOption) (*TransactionDetail, error) {
out := new(TransactionDetail) out := new(TransactionDetail)
err := c.cc.Invoke(ctx, "/types.chain33/QueryTransaction", in, out, opts...) err := c.cc.Invoke(ctx, "/types.chain33/QueryTransaction", in, out, opts...)
...@@ -707,8 +696,6 @@ type Chain33Server interface { ...@@ -707,8 +696,6 @@ type Chain33Server interface {
//交易接口 //交易接口
CreateRawTransaction(context.Context, *CreateTx) (*UnsignTx, error) CreateRawTransaction(context.Context, *CreateTx) (*UnsignTx, error)
CreateRawTxGroup(context.Context, *CreateTransactionGroup) (*UnsignTx, error) CreateRawTxGroup(context.Context, *CreateTransactionGroup) (*UnsignTx, error)
//发送签名后交易
SendRawTransaction(context.Context, *SignedTx) (*Reply, error)
// 根据哈希查询交易 // 根据哈希查询交易
QueryTransaction(context.Context, *ReqHash) (*TransactionDetail, error) QueryTransaction(context.Context, *ReqHash) (*TransactionDetail, error)
// 发送交易 // 发送交易
...@@ -879,24 +866,6 @@ func _Chain33_CreateRawTxGroup_Handler(srv interface{}, ctx context.Context, dec ...@@ -879,24 +866,6 @@ func _Chain33_CreateRawTxGroup_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Chain33_SendRawTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SignedTx)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(Chain33Server).SendRawTransaction(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/types.chain33/SendRawTransaction",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(Chain33Server).SendRawTransaction(ctx, req.(*SignedTx))
}
return interceptor(ctx, in, info, handler)
}
func _Chain33_QueryTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _Chain33_QueryTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReqHash) in := new(ReqHash)
if err := dec(in); err != nil { if err := dec(in); err != nil {
...@@ -1782,10 +1751,6 @@ var _Chain33_serviceDesc = grpc.ServiceDesc{ ...@@ -1782,10 +1751,6 @@ var _Chain33_serviceDesc = grpc.ServiceDesc{
Handler: _Chain33_CreateRawTxGroup_Handler, Handler: _Chain33_CreateRawTxGroup_Handler,
}, },
{ {
MethodName: "SendRawTransaction",
Handler: _Chain33_SendRawTransaction_Handler,
},
{
MethodName: "QueryTransaction", MethodName: "QueryTransaction",
Handler: _Chain33_QueryTransaction_Handler, Handler: _Chain33_QueryTransaction_Handler,
}, },
......
...@@ -638,69 +638,6 @@ func (m *NoBalanceTx) GetExpire() string { ...@@ -638,69 +638,6 @@ func (m *NoBalanceTx) GetExpire() string {
return "" return ""
} }
type SignedTx struct {
Unsign []byte `protobuf:"bytes,1,opt,name=unsign,proto3" json:"unsign,omitempty"`
Sign []byte `protobuf:"bytes,2,opt,name=sign,proto3" json:"sign,omitempty"`
Pubkey []byte `protobuf:"bytes,3,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
Ty int32 `protobuf:"varint,4,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SignedTx) Reset() { *m = SignedTx{} }
func (m *SignedTx) String() string { return proto.CompactTextString(m) }
func (*SignedTx) ProtoMessage() {}
func (*SignedTx) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{10}
}
func (m *SignedTx) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignedTx.Unmarshal(m, b)
}
func (m *SignedTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SignedTx.Marshal(b, m, deterministic)
}
func (m *SignedTx) XXX_Merge(src proto.Message) {
xxx_messageInfo_SignedTx.Merge(m, src)
}
func (m *SignedTx) XXX_Size() int {
return xxx_messageInfo_SignedTx.Size(m)
}
func (m *SignedTx) XXX_DiscardUnknown() {
xxx_messageInfo_SignedTx.DiscardUnknown(m)
}
var xxx_messageInfo_SignedTx proto.InternalMessageInfo
func (m *SignedTx) GetUnsign() []byte {
if m != nil {
return m.Unsign
}
return nil
}
func (m *SignedTx) GetSign() []byte {
if m != nil {
return m.Sign
}
return nil
}
func (m *SignedTx) GetPubkey() []byte {
if m != nil {
return m.Pubkey
}
return nil
}
func (m *SignedTx) GetTy() int32 {
if m != nil {
return m.Ty
}
return 0
}
type Transaction struct { type Transaction struct {
Execer []byte `protobuf:"bytes,1,opt,name=execer,proto3" json:"execer,omitempty"` Execer []byte `protobuf:"bytes,1,opt,name=execer,proto3" json:"execer,omitempty"`
Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
...@@ -723,7 +660,7 @@ func (m *Transaction) Reset() { *m = Transaction{} } ...@@ -723,7 +660,7 @@ func (m *Transaction) Reset() { *m = Transaction{} }
func (m *Transaction) String() string { return proto.CompactTextString(m) } func (m *Transaction) String() string { return proto.CompactTextString(m) }
func (*Transaction) ProtoMessage() {} func (*Transaction) ProtoMessage() {}
func (*Transaction) Descriptor() ([]byte, []int) { func (*Transaction) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{11} return fileDescriptor_2cc4e03d2c28c490, []int{10}
} }
func (m *Transaction) XXX_Unmarshal(b []byte) error { func (m *Transaction) XXX_Unmarshal(b []byte) error {
...@@ -825,7 +762,7 @@ func (m *Transactions) Reset() { *m = Transactions{} } ...@@ -825,7 +762,7 @@ func (m *Transactions) Reset() { *m = Transactions{} }
func (m *Transactions) String() string { return proto.CompactTextString(m) } func (m *Transactions) String() string { return proto.CompactTextString(m) }
func (*Transactions) ProtoMessage() {} func (*Transactions) ProtoMessage() {}
func (*Transactions) Descriptor() ([]byte, []int) { func (*Transactions) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{12} return fileDescriptor_2cc4e03d2c28c490, []int{11}
} }
func (m *Transactions) XXX_Unmarshal(b []byte) error { func (m *Transactions) XXX_Unmarshal(b []byte) error {
...@@ -865,7 +802,7 @@ func (m *RingSignature) Reset() { *m = RingSignature{} } ...@@ -865,7 +802,7 @@ func (m *RingSignature) Reset() { *m = RingSignature{} }
func (m *RingSignature) String() string { return proto.CompactTextString(m) } func (m *RingSignature) String() string { return proto.CompactTextString(m) }
func (*RingSignature) ProtoMessage() {} func (*RingSignature) ProtoMessage() {}
func (*RingSignature) Descriptor() ([]byte, []int) { func (*RingSignature) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{13} return fileDescriptor_2cc4e03d2c28c490, []int{12}
} }
func (m *RingSignature) XXX_Unmarshal(b []byte) error { func (m *RingSignature) XXX_Unmarshal(b []byte) error {
...@@ -906,7 +843,7 @@ func (m *RingSignatureItem) Reset() { *m = RingSignatureItem{} } ...@@ -906,7 +843,7 @@ func (m *RingSignatureItem) Reset() { *m = RingSignatureItem{} }
func (m *RingSignatureItem) String() string { return proto.CompactTextString(m) } func (m *RingSignatureItem) String() string { return proto.CompactTextString(m) }
func (*RingSignatureItem) ProtoMessage() {} func (*RingSignatureItem) ProtoMessage() {}
func (*RingSignatureItem) Descriptor() ([]byte, []int) { func (*RingSignatureItem) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{14} return fileDescriptor_2cc4e03d2c28c490, []int{13}
} }
func (m *RingSignatureItem) XXX_Unmarshal(b []byte) error { func (m *RingSignatureItem) XXX_Unmarshal(b []byte) error {
...@@ -965,7 +902,7 @@ func (m *Signature) Reset() { *m = Signature{} } ...@@ -965,7 +902,7 @@ func (m *Signature) Reset() { *m = Signature{} }
func (m *Signature) String() string { return proto.CompactTextString(m) } func (m *Signature) String() string { return proto.CompactTextString(m) }
func (*Signature) ProtoMessage() {} func (*Signature) ProtoMessage() {}
func (*Signature) Descriptor() ([]byte, []int) { func (*Signature) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{15} return fileDescriptor_2cc4e03d2c28c490, []int{14}
} }
func (m *Signature) XXX_Unmarshal(b []byte) error { func (m *Signature) XXX_Unmarshal(b []byte) error {
...@@ -1020,7 +957,7 @@ func (m *AddrOverview) Reset() { *m = AddrOverview{} } ...@@ -1020,7 +957,7 @@ func (m *AddrOverview) Reset() { *m = AddrOverview{} }
func (m *AddrOverview) String() string { return proto.CompactTextString(m) } func (m *AddrOverview) String() string { return proto.CompactTextString(m) }
func (*AddrOverview) ProtoMessage() {} func (*AddrOverview) ProtoMessage() {}
func (*AddrOverview) Descriptor() ([]byte, []int) { func (*AddrOverview) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{16} return fileDescriptor_2cc4e03d2c28c490, []int{15}
} }
func (m *AddrOverview) XXX_Unmarshal(b []byte) error { func (m *AddrOverview) XXX_Unmarshal(b []byte) error {
...@@ -1079,7 +1016,7 @@ func (m *ReqAddr) Reset() { *m = ReqAddr{} } ...@@ -1079,7 +1016,7 @@ func (m *ReqAddr) Reset() { *m = ReqAddr{} }
func (m *ReqAddr) String() string { return proto.CompactTextString(m) } func (m *ReqAddr) String() string { return proto.CompactTextString(m) }
func (*ReqAddr) ProtoMessage() {} func (*ReqAddr) ProtoMessage() {}
func (*ReqAddr) Descriptor() ([]byte, []int) { func (*ReqAddr) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{17} return fileDescriptor_2cc4e03d2c28c490, []int{16}
} }
func (m *ReqAddr) XXX_Unmarshal(b []byte) error { func (m *ReqAddr) XXX_Unmarshal(b []byte) error {
...@@ -1155,7 +1092,7 @@ func (m *ReqPrivacy) Reset() { *m = ReqPrivacy{} } ...@@ -1155,7 +1092,7 @@ func (m *ReqPrivacy) Reset() { *m = ReqPrivacy{} }
func (m *ReqPrivacy) String() string { return proto.CompactTextString(m) } func (m *ReqPrivacy) String() string { return proto.CompactTextString(m) }
func (*ReqPrivacy) ProtoMessage() {} func (*ReqPrivacy) ProtoMessage() {}
func (*ReqPrivacy) Descriptor() ([]byte, []int) { func (*ReqPrivacy) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{18} return fileDescriptor_2cc4e03d2c28c490, []int{17}
} }
func (m *ReqPrivacy) XXX_Unmarshal(b []byte) error { func (m *ReqPrivacy) XXX_Unmarshal(b []byte) error {
...@@ -1208,7 +1145,7 @@ func (m *HexTx) Reset() { *m = HexTx{} } ...@@ -1208,7 +1145,7 @@ func (m *HexTx) Reset() { *m = HexTx{} }
func (m *HexTx) String() string { return proto.CompactTextString(m) } func (m *HexTx) String() string { return proto.CompactTextString(m) }
func (*HexTx) ProtoMessage() {} func (*HexTx) ProtoMessage() {}
func (*HexTx) Descriptor() ([]byte, []int) { func (*HexTx) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{19} return fileDescriptor_2cc4e03d2c28c490, []int{18}
} }
func (m *HexTx) XXX_Unmarshal(b []byte) error { func (m *HexTx) XXX_Unmarshal(b []byte) error {
...@@ -1250,7 +1187,7 @@ func (m *ReplyTxInfo) Reset() { *m = ReplyTxInfo{} } ...@@ -1250,7 +1187,7 @@ func (m *ReplyTxInfo) Reset() { *m = ReplyTxInfo{} }
func (m *ReplyTxInfo) String() string { return proto.CompactTextString(m) } func (m *ReplyTxInfo) String() string { return proto.CompactTextString(m) }
func (*ReplyTxInfo) ProtoMessage() {} func (*ReplyTxInfo) ProtoMessage() {}
func (*ReplyTxInfo) Descriptor() ([]byte, []int) { func (*ReplyTxInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{20} return fileDescriptor_2cc4e03d2c28c490, []int{19}
} }
func (m *ReplyTxInfo) XXX_Unmarshal(b []byte) error { func (m *ReplyTxInfo) XXX_Unmarshal(b []byte) error {
...@@ -1310,7 +1247,7 @@ func (m *ReqTxList) Reset() { *m = ReqTxList{} } ...@@ -1310,7 +1247,7 @@ func (m *ReqTxList) Reset() { *m = ReqTxList{} }
func (m *ReqTxList) String() string { return proto.CompactTextString(m) } func (m *ReqTxList) String() string { return proto.CompactTextString(m) }
func (*ReqTxList) ProtoMessage() {} func (*ReqTxList) ProtoMessage() {}
func (*ReqTxList) Descriptor() ([]byte, []int) { func (*ReqTxList) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{21} return fileDescriptor_2cc4e03d2c28c490, []int{20}
} }
func (m *ReqTxList) XXX_Unmarshal(b []byte) error { func (m *ReqTxList) XXX_Unmarshal(b []byte) error {
...@@ -1349,7 +1286,7 @@ func (m *ReplyTxList) Reset() { *m = ReplyTxList{} } ...@@ -1349,7 +1286,7 @@ func (m *ReplyTxList) Reset() { *m = ReplyTxList{} }
func (m *ReplyTxList) String() string { return proto.CompactTextString(m) } func (m *ReplyTxList) String() string { return proto.CompactTextString(m) }
func (*ReplyTxList) ProtoMessage() {} func (*ReplyTxList) ProtoMessage() {}
func (*ReplyTxList) Descriptor() ([]byte, []int) { func (*ReplyTxList) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{22} return fileDescriptor_2cc4e03d2c28c490, []int{21}
} }
func (m *ReplyTxList) XXX_Unmarshal(b []byte) error { func (m *ReplyTxList) XXX_Unmarshal(b []byte) error {
...@@ -1388,7 +1325,7 @@ func (m *ReplyProperFee) Reset() { *m = ReplyProperFee{} } ...@@ -1388,7 +1325,7 @@ func (m *ReplyProperFee) Reset() { *m = ReplyProperFee{} }
func (m *ReplyProperFee) String() string { return proto.CompactTextString(m) } func (m *ReplyProperFee) String() string { return proto.CompactTextString(m) }
func (*ReplyProperFee) ProtoMessage() {} func (*ReplyProperFee) ProtoMessage() {}
func (*ReplyProperFee) Descriptor() ([]byte, []int) { func (*ReplyProperFee) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{23} return fileDescriptor_2cc4e03d2c28c490, []int{22}
} }
func (m *ReplyProperFee) XXX_Unmarshal(b []byte) error { func (m *ReplyProperFee) XXX_Unmarshal(b []byte) error {
...@@ -1429,7 +1366,7 @@ func (m *TxHashList) Reset() { *m = TxHashList{} } ...@@ -1429,7 +1366,7 @@ func (m *TxHashList) Reset() { *m = TxHashList{} }
func (m *TxHashList) String() string { return proto.CompactTextString(m) } func (m *TxHashList) String() string { return proto.CompactTextString(m) }
func (*TxHashList) ProtoMessage() {} func (*TxHashList) ProtoMessage() {}
func (*TxHashList) Descriptor() ([]byte, []int) { func (*TxHashList) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{24} return fileDescriptor_2cc4e03d2c28c490, []int{23}
} }
func (m *TxHashList) XXX_Unmarshal(b []byte) error { func (m *TxHashList) XXX_Unmarshal(b []byte) error {
...@@ -1482,7 +1419,7 @@ func (m *ReplyTxInfos) Reset() { *m = ReplyTxInfos{} } ...@@ -1482,7 +1419,7 @@ func (m *ReplyTxInfos) Reset() { *m = ReplyTxInfos{} }
func (m *ReplyTxInfos) String() string { return proto.CompactTextString(m) } func (m *ReplyTxInfos) String() string { return proto.CompactTextString(m) }
func (*ReplyTxInfos) ProtoMessage() {} func (*ReplyTxInfos) ProtoMessage() {}
func (*ReplyTxInfos) Descriptor() ([]byte, []int) { func (*ReplyTxInfos) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{25} return fileDescriptor_2cc4e03d2c28c490, []int{24}
} }
func (m *ReplyTxInfos) XXX_Unmarshal(b []byte) error { func (m *ReplyTxInfos) XXX_Unmarshal(b []byte) error {
...@@ -1522,7 +1459,7 @@ func (m *ReceiptLog) Reset() { *m = ReceiptLog{} } ...@@ -1522,7 +1459,7 @@ func (m *ReceiptLog) Reset() { *m = ReceiptLog{} }
func (m *ReceiptLog) String() string { return proto.CompactTextString(m) } func (m *ReceiptLog) String() string { return proto.CompactTextString(m) }
func (*ReceiptLog) ProtoMessage() {} func (*ReceiptLog) ProtoMessage() {}
func (*ReceiptLog) Descriptor() ([]byte, []int) { func (*ReceiptLog) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{26} return fileDescriptor_2cc4e03d2c28c490, []int{25}
} }
func (m *ReceiptLog) XXX_Unmarshal(b []byte) error { func (m *ReceiptLog) XXX_Unmarshal(b []byte) error {
...@@ -1573,7 +1510,7 @@ func (m *Receipt) Reset() { *m = Receipt{} } ...@@ -1573,7 +1510,7 @@ func (m *Receipt) Reset() { *m = Receipt{} }
func (m *Receipt) String() string { return proto.CompactTextString(m) } func (m *Receipt) String() string { return proto.CompactTextString(m) }
func (*Receipt) ProtoMessage() {} func (*Receipt) ProtoMessage() {}
func (*Receipt) Descriptor() ([]byte, []int) { func (*Receipt) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{27} return fileDescriptor_2cc4e03d2c28c490, []int{26}
} }
func (m *Receipt) XXX_Unmarshal(b []byte) error { func (m *Receipt) XXX_Unmarshal(b []byte) error {
...@@ -1627,7 +1564,7 @@ func (m *ReceiptData) Reset() { *m = ReceiptData{} } ...@@ -1627,7 +1564,7 @@ func (m *ReceiptData) Reset() { *m = ReceiptData{} }
func (m *ReceiptData) String() string { return proto.CompactTextString(m) } func (m *ReceiptData) String() string { return proto.CompactTextString(m) }
func (*ReceiptData) ProtoMessage() {} func (*ReceiptData) ProtoMessage() {}
func (*ReceiptData) Descriptor() ([]byte, []int) { func (*ReceiptData) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{28} return fileDescriptor_2cc4e03d2c28c490, []int{27}
} }
func (m *ReceiptData) XXX_Unmarshal(b []byte) error { func (m *ReceiptData) XXX_Unmarshal(b []byte) error {
...@@ -1678,7 +1615,7 @@ func (m *TxResult) Reset() { *m = TxResult{} } ...@@ -1678,7 +1615,7 @@ func (m *TxResult) Reset() { *m = TxResult{} }
func (m *TxResult) String() string { return proto.CompactTextString(m) } func (m *TxResult) String() string { return proto.CompactTextString(m) }
func (*TxResult) ProtoMessage() {} func (*TxResult) ProtoMessage() {}
func (*TxResult) Descriptor() ([]byte, []int) { func (*TxResult) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{29} return fileDescriptor_2cc4e03d2c28c490, []int{28}
} }
func (m *TxResult) XXX_Unmarshal(b []byte) error { func (m *TxResult) XXX_Unmarshal(b []byte) error {
...@@ -1761,7 +1698,7 @@ func (m *TransactionDetail) Reset() { *m = TransactionDetail{} } ...@@ -1761,7 +1698,7 @@ func (m *TransactionDetail) Reset() { *m = TransactionDetail{} }
func (m *TransactionDetail) String() string { return proto.CompactTextString(m) } func (m *TransactionDetail) String() string { return proto.CompactTextString(m) }
func (*TransactionDetail) ProtoMessage() {} func (*TransactionDetail) ProtoMessage() {}
func (*TransactionDetail) Descriptor() ([]byte, []int) { func (*TransactionDetail) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{30} return fileDescriptor_2cc4e03d2c28c490, []int{29}
} }
func (m *TransactionDetail) XXX_Unmarshal(b []byte) error { func (m *TransactionDetail) XXX_Unmarshal(b []byte) error {
...@@ -1863,7 +1800,7 @@ func (m *TransactionDetails) Reset() { *m = TransactionDetails{} } ...@@ -1863,7 +1800,7 @@ func (m *TransactionDetails) Reset() { *m = TransactionDetails{} }
func (m *TransactionDetails) String() string { return proto.CompactTextString(m) } func (m *TransactionDetails) String() string { return proto.CompactTextString(m) }
func (*TransactionDetails) ProtoMessage() {} func (*TransactionDetails) ProtoMessage() {}
func (*TransactionDetails) Descriptor() ([]byte, []int) { func (*TransactionDetails) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{31} return fileDescriptor_2cc4e03d2c28c490, []int{30}
} }
func (m *TransactionDetails) XXX_Unmarshal(b []byte) error { func (m *TransactionDetails) XXX_Unmarshal(b []byte) error {
...@@ -1902,7 +1839,7 @@ func (m *ReqAddrs) Reset() { *m = ReqAddrs{} } ...@@ -1902,7 +1839,7 @@ func (m *ReqAddrs) Reset() { *m = ReqAddrs{} }
func (m *ReqAddrs) String() string { return proto.CompactTextString(m) } func (m *ReqAddrs) String() string { return proto.CompactTextString(m) }
func (*ReqAddrs) ProtoMessage() {} func (*ReqAddrs) ProtoMessage() {}
func (*ReqAddrs) Descriptor() ([]byte, []int) { func (*ReqAddrs) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{32} return fileDescriptor_2cc4e03d2c28c490, []int{31}
} }
func (m *ReqAddrs) XXX_Unmarshal(b []byte) error { func (m *ReqAddrs) XXX_Unmarshal(b []byte) error {
...@@ -1941,7 +1878,7 @@ func (m *ReqDecodeRawTransaction) Reset() { *m = ReqDecodeRawTransaction ...@@ -1941,7 +1878,7 @@ func (m *ReqDecodeRawTransaction) Reset() { *m = ReqDecodeRawTransaction
func (m *ReqDecodeRawTransaction) String() string { return proto.CompactTextString(m) } func (m *ReqDecodeRawTransaction) String() string { return proto.CompactTextString(m) }
func (*ReqDecodeRawTransaction) ProtoMessage() {} func (*ReqDecodeRawTransaction) ProtoMessage() {}
func (*ReqDecodeRawTransaction) Descriptor() ([]byte, []int) { func (*ReqDecodeRawTransaction) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{33} return fileDescriptor_2cc4e03d2c28c490, []int{32}
} }
func (m *ReqDecodeRawTransaction) XXX_Unmarshal(b []byte) error { func (m *ReqDecodeRawTransaction) XXX_Unmarshal(b []byte) error {
...@@ -1981,7 +1918,7 @@ func (m *UserWrite) Reset() { *m = UserWrite{} } ...@@ -1981,7 +1918,7 @@ func (m *UserWrite) Reset() { *m = UserWrite{} }
func (m *UserWrite) String() string { return proto.CompactTextString(m) } func (m *UserWrite) String() string { return proto.CompactTextString(m) }
func (*UserWrite) ProtoMessage() {} func (*UserWrite) ProtoMessage() {}
func (*UserWrite) Descriptor() ([]byte, []int) { func (*UserWrite) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{34} return fileDescriptor_2cc4e03d2c28c490, []int{33}
} }
func (m *UserWrite) XXX_Unmarshal(b []byte) error { func (m *UserWrite) XXX_Unmarshal(b []byte) error {
...@@ -2017,7 +1954,7 @@ func (m *UserWrite) GetContent() string { ...@@ -2017,7 +1954,7 @@ func (m *UserWrite) GetContent() string {
} }
type UpgradeMeta struct { type UpgradeMeta struct {
Indexing bool `protobuf:"varint,1,opt,name=indexing,proto3" json:"indexing,omitempty"` Starting bool `protobuf:"varint,1,opt,name=starting,proto3" json:"starting,omitempty"`
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
...@@ -2029,7 +1966,7 @@ func (m *UpgradeMeta) Reset() { *m = UpgradeMeta{} } ...@@ -2029,7 +1966,7 @@ func (m *UpgradeMeta) Reset() { *m = UpgradeMeta{} }
func (m *UpgradeMeta) String() string { return proto.CompactTextString(m) } func (m *UpgradeMeta) String() string { return proto.CompactTextString(m) }
func (*UpgradeMeta) ProtoMessage() {} func (*UpgradeMeta) ProtoMessage() {}
func (*UpgradeMeta) Descriptor() ([]byte, []int) { func (*UpgradeMeta) Descriptor() ([]byte, []int) {
return fileDescriptor_2cc4e03d2c28c490, []int{35} return fileDescriptor_2cc4e03d2c28c490, []int{34}
} }
func (m *UpgradeMeta) XXX_Unmarshal(b []byte) error { func (m *UpgradeMeta) XXX_Unmarshal(b []byte) error {
...@@ -2050,9 +1987,9 @@ func (m *UpgradeMeta) XXX_DiscardUnknown() { ...@@ -2050,9 +1987,9 @@ func (m *UpgradeMeta) XXX_DiscardUnknown() {
var xxx_messageInfo_UpgradeMeta proto.InternalMessageInfo var xxx_messageInfo_UpgradeMeta proto.InternalMessageInfo
func (m *UpgradeMeta) GetIndexing() bool { func (m *UpgradeMeta) GetStarting() bool {
if m != nil { if m != nil {
return m.Indexing return m.Starting
} }
return false return false
} }
...@@ -2082,7 +2019,6 @@ func init() { ...@@ -2082,7 +2019,6 @@ func init() {
proto.RegisterType((*CreateTransactionGroup)(nil), "types.CreateTransactionGroup") proto.RegisterType((*CreateTransactionGroup)(nil), "types.CreateTransactionGroup")
proto.RegisterType((*UnsignTx)(nil), "types.UnsignTx") proto.RegisterType((*UnsignTx)(nil), "types.UnsignTx")
proto.RegisterType((*NoBalanceTx)(nil), "types.NoBalanceTx") proto.RegisterType((*NoBalanceTx)(nil), "types.NoBalanceTx")
proto.RegisterType((*SignedTx)(nil), "types.SignedTx")
proto.RegisterType((*Transaction)(nil), "types.Transaction") proto.RegisterType((*Transaction)(nil), "types.Transaction")
proto.RegisterType((*Transactions)(nil), "types.Transactions") proto.RegisterType((*Transactions)(nil), "types.Transactions")
proto.RegisterType((*RingSignature)(nil), "types.RingSignature") proto.RegisterType((*RingSignature)(nil), "types.RingSignature")
...@@ -2113,90 +2049,88 @@ func init() { ...@@ -2113,90 +2049,88 @@ func init() {
func init() { proto.RegisterFile("transaction.proto", fileDescriptor_2cc4e03d2c28c490) } func init() { proto.RegisterFile("transaction.proto", fileDescriptor_2cc4e03d2c28c490) }
var fileDescriptor_2cc4e03d2c28c490 = []byte{ var fileDescriptor_2cc4e03d2c28c490 = []byte{
// 1348 bytes of a gzipped FileDescriptorProto // 1320 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdb, 0x8e, 0x13, 0x47, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xcf, 0x6e, 0x1b, 0xb7,
0x13, 0x96, 0x67, 0x6c, 0xaf, 0x5d, 0x36, 0xfc, 0xec, 0x08, 0x2d, 0x16, 0xe2, 0x87, 0x4d, 0x8b, 0x13, 0x86, 0xb4, 0x5a, 0x59, 0x1a, 0x29, 0xf9, 0xc5, 0x8b, 0x20, 0x11, 0x82, 0x5f, 0x13, 0x97,
0x48, 0x08, 0x21, 0xaf, 0xb4, 0xcb, 0x5d, 0x22, 0x25, 0xc0, 0x26, 0x80, 0x16, 0x08, 0x69, 0xcc, 0x48, 0x81, 0x20, 0x08, 0x64, 0xc0, 0xce, 0xad, 0x05, 0xda, 0x24, 0x6e, 0x93, 0xc0, 0x49, 0x9a,
0x41, 0x49, 0x14, 0xa9, 0x77, 0x5c, 0x6b, 0x77, 0xb0, 0xa7, 0xbd, 0x33, 0xed, 0x65, 0xfc, 0x02, 0x32, 0xca, 0x1f, 0xb4, 0xbd, 0xd0, 0xab, 0xb1, 0xb4, 0x8d, 0xb4, 0x94, 0xb9, 0x94, 0xb3, 0x7a,
0xb9, 0x49, 0xee, 0xf2, 0x48, 0x79, 0x81, 0x3c, 0x46, 0x1e, 0x23, 0xea, 0xea, 0xee, 0x99, 0xf6, 0x81, 0x5e, 0xda, 0x5b, 0x1f, 0xa9, 0x2f, 0xd0, 0xc7, 0xe8, 0x63, 0x14, 0x1c, 0x92, 0xbb, 0xb4,
0x1e, 0x10, 0x17, 0x91, 0x72, 0xd7, 0x5f, 0x75, 0xb9, 0xea, 0xab, 0xe3, 0xb4, 0x61, 0x53, 0xe7, 0x25, 0x07, 0x39, 0x14, 0xe8, 0x8d, 0x1f, 0x39, 0x9a, 0xf9, 0x66, 0xe6, 0xe3, 0x2c, 0x05, 0xdb,
0x22, 0x2b, 0x44, 0xaa, 0xa5, 0xca, 0x86, 0x8b, 0x5c, 0x69, 0x95, 0xb4, 0xf4, 0x6a, 0x81, 0xc5, 0x5a, 0x89, 0xbc, 0x10, 0xa9, 0xce, 0x64, 0x3e, 0x5c, 0x28, 0xa9, 0x65, 0x12, 0xeb, 0xd5, 0x02,
0xf5, 0x7e, 0xaa, 0xe6, 0x73, 0x2f, 0x64, 0xcf, 0xe1, 0xd2, 0x83, 0xa2, 0x40, 0x5d, 0x3c, 0xc6, 0x8b, 0x1b, 0xfd, 0x54, 0xce, 0xe7, 0x7e, 0x93, 0x3d, 0x87, 0x4b, 0x0f, 0x8a, 0x02, 0x75, 0xf1,
0x0c, 0x0b, 0x59, 0x24, 0x5b, 0xd0, 0x16, 0x73, 0xb5, 0xcc, 0xf4, 0x20, 0xda, 0x6e, 0xdc, 0x89, 0x18, 0x73, 0x2c, 0xb2, 0x22, 0xb9, 0x06, 0x6d, 0x31, 0x97, 0xcb, 0x5c, 0x0f, 0x9a, 0x3b, 0x8d,
0xb9, 0x43, 0xc9, 0x6d, 0xb8, 0x94, 0xa3, 0x5e, 0xe6, 0xd9, 0x83, 0xf1, 0x38, 0xc7, 0xa2, 0x18, 0x3b, 0x11, 0x77, 0x28, 0xb9, 0x0d, 0x97, 0x14, 0xea, 0xa5, 0xca, 0x1f, 0x8c, 0xc7, 0x0a, 0x8b,
0xc4, 0xdb, 0x8d, 0x3b, 0x5d, 0xbe, 0x2e, 0x64, 0xbf, 0x37, 0xe0, 0xaa, 0xb5, 0x37, 0x32, 0xfe, 0x62, 0x10, 0xed, 0x34, 0xee, 0x74, 0xf9, 0xd9, 0x4d, 0xf6, 0x7b, 0x03, 0xae, 0x5a, 0x7f, 0x23,
0x8f, 0x30, 0x1f, 0xa9, 0x6f, 0x4a, 0x4c, 0x93, 0x1b, 0xd0, 0x4d, 0x95, 0xcc, 0xb4, 0x7a, 0x8f, 0x13, 0xff, 0x18, 0xd5, 0x48, 0x7e, 0x5b, 0x62, 0x9a, 0xfc, 0x1f, 0xba, 0xa9, 0xcc, 0x72, 0x2d,
0xd9, 0xa0, 0x41, 0x3f, 0xad, 0x05, 0x17, 0x3a, 0x4d, 0xa0, 0x99, 0x29, 0x8d, 0xe4, 0xab, 0xcf, 0xdf, 0x63, 0x3e, 0x68, 0xd0, 0x4f, 0xeb, 0x8d, 0x0b, 0x83, 0x26, 0xd0, 0xca, 0xa5, 0x46, 0x8a,
0xe9, 0x9c, 0x5c, 0x87, 0x0e, 0x96, 0x98, 0xbe, 0x10, 0x73, 0x1c, 0x34, 0xc9, 0x50, 0x85, 0x93, 0xd5, 0xe7, 0xb4, 0x4e, 0x6e, 0x40, 0x07, 0x4b, 0x4c, 0x5f, 0x88, 0x39, 0x0e, 0x5a, 0xe4, 0xa8,
0xcb, 0x10, 0x69, 0x35, 0x68, 0x91, 0x34, 0xd2, 0x8a, 0xfd, 0xda, 0x80, 0xcb, 0x96, 0xce, 0x5b, 0xc2, 0xc9, 0x65, 0x68, 0x6a, 0x39, 0x88, 0x69, 0xb7, 0xa9, 0x25, 0xfb, 0xb5, 0x01, 0x97, 0x2d,
0xa9, 0xa7, 0xe3, 0x5c, 0x7c, 0xf8, 0x8f, 0x88, 0xfc, 0xe2, 0x79, 0xf8, 0xb4, 0xfc, 0x8b, 0x3c, 0x9d, 0xb7, 0x99, 0x9e, 0x8e, 0x95, 0xf8, 0xf0, 0x1f, 0x11, 0xf9, 0xc5, 0xf3, 0xf0, 0x65, 0xf9,
0xac, 0xaf, 0x66, 0xe5, 0xeb, 0x00, 0x5a, 0xe4, 0xcb, 0x28, 0x1b, 0x42, 0xce, 0x3a, 0x9d, 0x8d, 0x17, 0x79, 0xd8, 0x58, 0xad, 0x2a, 0xd6, 0x21, 0xc4, 0x14, 0xcb, 0x18, 0x1b, 0x42, 0xce, 0x3b,
0xe1, 0x62, 0x35, 0x3f, 0x54, 0x33, 0x32, 0xdc, 0xe5, 0x0e, 0x05, 0x0e, 0xe3, 0xd0, 0x21, 0xfb, 0xad, 0x8d, 0xe3, 0x62, 0x35, 0x3f, 0x92, 0x33, 0x72, 0xdc, 0xe5, 0x0e, 0x05, 0x01, 0xa3, 0x30,
0xbb, 0x01, 0x9d, 0x47, 0x39, 0x0a, 0x8d, 0xa3, 0xd2, 0x79, 0x6a, 0x78, 0x4f, 0x17, 0xb2, 0xbc, 0x20, 0xfb, 0xbb, 0x01, 0x9d, 0x47, 0x0a, 0x85, 0xc6, 0x51, 0xe9, 0x22, 0x35, 0x7c, 0xa4, 0x0b,
0x02, 0xf1, 0x11, 0xa2, 0xb3, 0x64, 0x8e, 0x15, 0xef, 0x66, 0xc0, 0xfb, 0x26, 0x80, 0xac, 0xea, 0x59, 0x5e, 0x81, 0xe8, 0x18, 0xd1, 0x79, 0x32, 0xcb, 0x8a, 0x77, 0x2b, 0xe0, 0x7d, 0x13, 0x20,
0x42, 0xb9, 0xea, 0xf0, 0x40, 0x92, 0x0c, 0x60, 0x43, 0x16, 0x23, 0xca, 0x4f, 0x9b, 0x2e, 0x3d, 0xab, 0xfa, 0x42, 0xb5, 0xea, 0xf0, 0x60, 0x27, 0x19, 0xc0, 0x56, 0x56, 0x8c, 0xa8, 0x3e, 0x6d,
0x4c, 0xb6, 0xa1, 0x47, 0x69, 0x7a, 0x65, 0x23, 0xd9, 0x20, 0x42, 0xa1, 0x68, 0xad, 0x36, 0x9d, 0x3a, 0xf4, 0x30, 0xd9, 0x81, 0x1e, 0x95, 0xe9, 0x95, 0xcd, 0x64, 0x8b, 0x08, 0x85, 0x5b, 0x67,
0x53, 0xb5, 0xd9, 0x82, 0xb6, 0x39, 0x63, 0x3e, 0xe8, 0xda, 0x14, 0x58, 0xc4, 0xde, 0x41, 0x9f, 0x7a, 0xd3, 0x39, 0xd7, 0x9b, 0x6b, 0xd0, 0x36, 0x6b, 0x54, 0x83, 0xae, 0x2d, 0x81, 0x45, 0xec,
0xe3, 0xdb, 0x5c, 0x6a, 0xe4, 0xe2, 0x83, 0x8b, 0xb6, 0xac, 0xa2, 0xf5, 0xd1, 0xc7, 0x61, 0xf4, 0x1d, 0xf4, 0x39, 0xbe, 0x55, 0x99, 0x46, 0x2e, 0x3e, 0xb8, 0x6c, 0xcb, 0x2a, 0x5b, 0x9f, 0x7d,
0x58, 0x2e, 0x64, 0xee, 0xab, 0xef, 0x90, 0x8f, 0xbe, 0x55, 0x45, 0xcf, 0xee, 0xc2, 0x96, 0xcb, 0x14, 0x66, 0x8f, 0xe5, 0x22, 0x53, 0xbe, 0xfb, 0x0e, 0xf9, 0xec, 0xe3, 0x2a, 0x7b, 0x76, 0x17,
0x61, 0x3d, 0x94, 0x8f, 0x73, 0xb5, 0x5c, 0x18, 0x5d, 0x5d, 0x16, 0x83, 0xc6, 0x76, 0x7c, 0xa7, 0xae, 0xb9, 0x1a, 0xd6, 0x97, 0xf2, 0xb1, 0x92, 0xcb, 0x85, 0xb1, 0xd5, 0x65, 0x31, 0x68, 0xec,
0xcb, 0xcd, 0x91, 0xdd, 0x84, 0xce, 0xeb, 0xac, 0x90, 0x93, 0x6c, 0x54, 0x9a, 0xac, 0x8d, 0x85, 0x44, 0x77, 0xba, 0xdc, 0x2c, 0xd9, 0x4d, 0xe8, 0xbc, 0xce, 0x8b, 0x6c, 0x92, 0x8f, 0x4a, 0x53,
0x16, 0xc4, 0xa1, 0xcf, 0xe9, 0xcc, 0x14, 0xf4, 0x5e, 0xa8, 0x87, 0x62, 0x26, 0xb2, 0xd4, 0x94, 0xb5, 0xb1, 0xd0, 0x82, 0x38, 0xf4, 0x39, 0xad, 0x99, 0x84, 0xde, 0x0b, 0xf9, 0x50, 0xcc, 0x44,
0xe4, 0x2a, 0xb4, 0x74, 0xf9, 0x04, 0x3d, 0x4f, 0x0b, 0x4c, 0xea, 0x16, 0x62, 0x65, 0x86, 0xd2, 0x9e, 0x9a, 0x96, 0x5c, 0x85, 0x58, 0x97, 0x4f, 0xd0, 0xf3, 0xb4, 0xc0, 0x94, 0x6e, 0x21, 0x56,
0x95, 0xd9, 0x43, 0xba, 0xc9, 0xe5, 0xc9, 0x7b, 0x5c, 0xb9, 0x48, 0x3c, 0xbc, 0x28, 0x1c, 0xf6, 0xe6, 0x52, 0xba, 0x36, 0x7b, 0x48, 0x27, 0x2a, 0x3b, 0x7d, 0x8f, 0x2b, 0x97, 0x89, 0x87, 0x17,
0x33, 0x74, 0x5e, 0xc9, 0x49, 0x86, 0xe3, 0x51, 0x69, 0x74, 0x96, 0x44, 0xce, 0x51, 0x72, 0xc8, 0xa5, 0xc3, 0x7e, 0x6b, 0x42, 0x2f, 0xe0, 0x1d, 0x94, 0xcf, 0xd2, 0x72, 0xc8, 0xc5, 0x9c, 0x49,
0x10, 0x25, 0x69, 0x64, 0x89, 0x92, 0x6c, 0x0b, 0xda, 0x8b, 0xe5, 0xa1, 0x77, 0xd4, 0xe7, 0x0e, 0x31, 0xa6, 0x98, 0x7d, 0xee, 0x61, 0x32, 0x84, 0xae, 0x49, 0x48, 0xe8, 0xa5, 0xb2, 0xa2, 0xe8,
0x51, 0x1a, 0x57, 0xe4, 0xa3, 0xc5, 0x23, 0xbd, 0x62, 0xbf, 0x45, 0xd0, 0x0b, 0xf2, 0x12, 0x94, 0xed, 0x5d, 0x19, 0xd2, 0x30, 0x1a, 0xbe, 0xf2, 0xfb, 0xbc, 0x36, 0xf1, 0x05, 0x6c, 0xd5, 0xf2,
0xc7, 0xf9, 0xb0, 0xc8, 0xc5, 0x34, 0x53, 0x62, 0xec, 0xdc, 0x78, 0x98, 0x0c, 0xa1, 0x6b, 0x3c, 0xa9, 0xb9, 0xd9, 0xaa, 0xfa, 0x52, 0x5f, 0x85, 0x38, 0x97, 0x79, 0x8a, 0x24, 0x90, 0x88, 0x5b,
0x0a, 0xbd, 0xcc, 0x6d, 0xd3, 0xf5, 0x76, 0xaf, 0x0c, 0x69, 0xd9, 0x0d, 0x5f, 0x79, 0x39, 0xaf, 0xe0, 0x1a, 0xb5, 0x55, 0x35, 0xea, 0x26, 0xc0, 0xc4, 0x54, 0xfb, 0x11, 0x49, 0xd5, 0xc8, 0x21,
0x55, 0x7c, 0x81, 0x9a, 0x75, 0x7b, 0xd6, 0xb1, 0xdb, 0xaa, 0xf9, 0x52, 0x5e, 0x85, 0x56, 0xa6, 0xe6, 0xc1, 0x8e, 0xf1, 0x3e, 0x45, 0x31, 0x76, 0x82, 0xe8, 0x73, 0x87, 0x48, 0xb4, 0x58, 0xea,
0xb2, 0x14, 0xa9, 0x01, 0x63, 0x6e, 0x81, 0x6b, 0x84, 0x8d, 0xaa, 0x11, 0x6e, 0x02, 0x4c, 0x4c, 0x01, 0x38, 0xd1, 0x62, 0xa9, 0xd9, 0x7d, 0xe8, 0x07, 0xc5, 0x28, 0x92, 0xdb, 0x75, 0x03, 0x7b,
0x35, 0x1f, 0xd1, 0x28, 0x74, 0x28, 0xb2, 0x40, 0x62, 0xac, 0x4f, 0x51, 0x8c, 0x5d, 0xc3, 0xf5, 0x7b, 0x89, 0xcb, 0x2a, 0xb0, 0xb0, 0x4d, 0xfd, 0x1a, 0x2e, 0xf1, 0x2c, 0x9f, 0x54, 0xd9, 0x26,
0xb9, 0x43, 0x34, 0x14, 0x58, 0xea, 0x01, 0xb8, 0xa1, 0xc0, 0x52, 0xb3, 0xfb, 0xd0, 0x0f, 0x92, 0x43, 0x88, 0x33, 0x8d, 0x73, 0xff, 0xc3, 0x81, 0xfb, 0xe1, 0x19, 0xa3, 0xa7, 0x1a, 0xe7, 0xdc,
0x51, 0x24, 0xb7, 0xeb, 0x06, 0xe9, 0xed, 0x26, 0x2e, 0xaa, 0x40, 0xc3, 0x36, 0xcd, 0x57, 0x70, 0x9a, 0xb1, 0xa7, 0xb0, 0xbd, 0x76, 0x66, 0x78, 0x2f, 0x96, 0x47, 0xa6, 0x95, 0xc6, 0x4b, 0x9f,
0x89, 0xcb, 0x6c, 0x52, 0x45, 0x9b, 0x0c, 0xa1, 0x25, 0x35, 0xce, 0xfd, 0x0f, 0x07, 0xee, 0x87, 0x3b, 0x64, 0x46, 0x4b, 0x5d, 0xef, 0x26, 0x1d, 0xd5, 0x1b, 0xec, 0x07, 0xe8, 0xd6, 0x3c, 0x4c,
0x6b, 0x4a, 0x4f, 0x35, 0xce, 0xb9, 0x55, 0x63, 0x4f, 0x61, 0xf3, 0xcc, 0x5d, 0x50, 0x41, 0x63, 0xa9, 0x56, 0xd4, 0xc8, 0x98, 0x37, 0xf5, 0x2a, 0x70, 0x69, 0x7b, 0xb8, 0xd1, 0xa5, 0x1d, 0x3e,
0xa5, 0xae, 0xe0, 0x8d, 0x30, 0xdf, 0x11, 0x5d, 0xd5, 0x02, 0xf6, 0x3d, 0x74, 0x6b, 0x1e, 0xb6, 0x81, 0xcb, 0x9f, 0xa1, 0x6f, 0xc4, 0xf5, 0xfd, 0x29, 0xaa, 0xd3, 0x0c, 0xe9, 0xe6, 0x2a, 0x4c,
0xd8, 0x0d, 0x5f, 0xec, 0xc0, 0x64, 0xb4, 0xd6, 0x14, 0x37, 0x4e, 0x97, 0x70, 0xcd, 0xe4, 0x4f, 0xb3, 0x53, 0xa7, 0x91, 0x88, 0x7b, 0x68, 0x4e, 0x8e, 0xac, 0x76, 0xdd, 0xc8, 0xf0, 0xd0, 0x9c,
0xd0, 0x37, 0xcd, 0xfb, 0xdd, 0x09, 0xe6, 0x27, 0x12, 0x69, 0x33, 0xe4, 0x98, 0xca, 0x13, 0xd7, 0xe8, 0xf2, 0x51, 0x30, 0x81, 0x3c, 0x64, 0x7f, 0x34, 0x60, 0x8b, 0xe3, 0x09, 0xc9, 0x37, 0x81,
0x23, 0x31, 0xf7, 0xd0, 0xdc, 0x1c, 0xda, 0xd9, 0x70, 0x2b, 0xc9, 0x43, 0x73, 0xa3, 0xcb, 0x47, 0x96, 0x30, 0xaa, 0x76, 0x23, 0x4d, 0xb8, 0xbd, 0xe3, 0x99, 0x98, 0x90, 0xc3, 0x98, 0xd3, 0xda,
0xc1, 0x86, 0xf3, 0x90, 0xfd, 0xd1, 0x80, 0x0d, 0x8e, 0xc7, 0x34, 0x1e, 0x09, 0x34, 0x85, 0x99, 0x08, 0x23, 0xad, 0x7c, 0xc5, 0xdc, 0x02, 0x93, 0xc5, 0x38, 0x53, 0x48, 0x8d, 0x21, 0x79, 0xc5,
0x1a, 0xb7, 0x32, 0x85, 0x93, 0x1d, 0xcd, 0xc4, 0x84, 0x0c, 0xb6, 0x38, 0x9d, 0x4d, 0x63, 0xa4, 0xbc, 0xde, 0xb0, 0x32, 0xc8, 0x26, 0x53, 0xed, 0x45, 0x66, 0x91, 0xf1, 0x95, 0xe5, 0x63, 0x2c,
0x95, 0xad, 0x16, 0xb7, 0xc0, 0x44, 0x31, 0x96, 0x39, 0x52, 0x61, 0x5c, 0x87, 0xd7, 0x02, 0xdb, 0xbd, 0xc8, 0x08, 0xb0, 0x77, 0x00, 0x1c, 0x4f, 0x5e, 0xaa, 0xec, 0x54, 0xa4, 0xab, 0x3a, 0x5e,
0x06, 0x72, 0x32, 0xd5, 0xbe, 0xc9, 0x2c, 0x32, 0xb6, 0x64, 0x36, 0xc6, 0xd2, 0x37, 0x19, 0x01, 0xe3, 0xc2, 0x78, 0xcd, 0x8b, 0xe3, 0x45, 0x61, 0x3c, 0x76, 0x1d, 0xe2, 0x27, 0x58, 0xae, 0x0f,
0xf6, 0x0e, 0x80, 0xe3, 0xf1, 0xcb, 0x5c, 0x9e, 0x88, 0x74, 0x55, 0xfb, 0x6b, 0x5c, 0xe8, 0x2f, 0x20, 0xb6, 0x84, 0x1e, 0xc7, 0xc5, 0x6c, 0x35, 0x2a, 0x9f, 0xe6, 0xc7, 0xd2, 0xe4, 0x3d, 0x15,
0xba, 0xd8, 0x5f, 0x1c, 0xfa, 0x63, 0xd7, 0xa0, 0xf5, 0x04, 0xcb, 0xb3, 0x0b, 0x8e, 0x2d, 0xa1, 0xc5, 0xd4, 0x4f, 0x07, 0xb3, 0x0e, 0x7c, 0x36, 0x37, 0xe7, 0x10, 0x05, 0x39, 0x24, 0xb7, 0xa1,
0xc7, 0x71, 0x31, 0x5b, 0x8d, 0xca, 0xa7, 0xd9, 0x91, 0x32, 0x71, 0x4f, 0x45, 0x31, 0xf5, 0xdb, 0x2d, 0xe8, 0xab, 0x34, 0x68, 0x91, 0x0c, 0xfb, 0x4e, 0x86, 0xf4, 0xf9, 0xe0, 0xee, 0x8c, 0x7d,
0xc7, 0x9c, 0x03, 0x9b, 0xd1, 0xf9, 0x31, 0xc4, 0x41, 0x0c, 0xc9, 0x6d, 0x68, 0x0b, 0xfa, 0xea, 0x0e, 0x5d, 0x8e, 0x27, 0xa3, 0xf2, 0x59, 0x56, 0xe8, 0xb3, 0x89, 0x46, 0x2e, 0x51, 0xb6, 0x5f,
0x0d, 0x9a, 0xd4, 0x86, 0x7d, 0xd7, 0x86, 0xf4, 0x79, 0xe2, 0xee, 0x8e, 0x7d, 0x06, 0x5d, 0x8e, 0x31, 0x23, 0xa3, 0x4f, 0xbb, 0x14, 0x43, 0xb8, 0x4c, 0x3f, 0x7a, 0xa9, 0xe4, 0x02, 0xd5, 0x77,
0xc7, 0xa3, 0xf2, 0x99, 0x2c, 0xf4, 0x7a, 0xa0, 0xb1, 0x0b, 0x94, 0xed, 0x55, 0xcc, 0x48, 0xe9, 0x88, 0xa6, 0x5e, 0x0b, 0x0f, 0x5c, 0x80, 0x7a, 0x83, 0x71, 0x80, 0x51, 0xf9, 0x44, 0x14, 0x53,
0xd3, 0x86, 0x62, 0x08, 0x97, 0xe9, 0x47, 0x2f, 0x73, 0xb5, 0xc0, 0xfc, 0x5b, 0x44, 0x93, 0xaf, 0x8a, 0x61, 0x32, 0x15, 0xc5, 0x14, 0x0b, 0x2f, 0x7e, 0x8b, 0x6a, 0x82, 0xcd, 0x80, 0x60, 0x30,
0x85, 0x07, 0xce, 0x41, 0x2d, 0x60, 0x1c, 0x60, 0x54, 0x3e, 0x11, 0xc5, 0x94, 0x7c, 0x98, 0x48, 0x40, 0xa2, 0x9d, 0xa8, 0x1e, 0x20, 0xec, 0x2b, 0x33, 0xf3, 0xab, 0x92, 0x16, 0xc9, 0x3d, 0xa3,
0x45, 0x31, 0xc5, 0xc2, 0x37, 0xbf, 0x45, 0x35, 0xc1, 0x28, 0x20, 0x18, 0x2c, 0x90, 0x78, 0x3b, 0x42, 0x5a, 0x9e, 0x63, 0x1f, 0x58, 0x71, 0x6f, 0xc2, 0x86, 0x46, 0x03, 0x29, 0x66, 0x0b, 0xfd,
0xae, 0x17, 0x08, 0xfb, 0xd2, 0x7c, 0x53, 0xaa, 0x94, 0x16, 0xc9, 0x3d, 0xd3, 0x85, 0x74, 0x3c, 0x4c, 0x4e, 0xd6, 0xee, 0xd2, 0x15, 0x88, 0x66, 0x72, 0xe2, 0x2e, 0x92, 0x59, 0x32, 0x61, 0x84,
0xc5, 0x3e, 0xd0, 0xe2, 0x5e, 0x85, 0x0d, 0x4d, 0x0f, 0xa4, 0x28, 0x17, 0xfa, 0x99, 0x9a, 0x9c, 0x4c, 0xf6, 0x6b, 0xc6, 0xb7, 0xa0, 0x79, 0xf8, 0x86, 0x2e, 0x6b, 0x6f, 0xef, 0x7f, 0x2e, 0xe6,
0x99, 0xa5, 0x2b, 0x10, 0xcf, 0xd4, 0xc4, 0x0d, 0x92, 0x39, 0x32, 0x61, 0x1a, 0x99, 0xf4, 0xcf, 0x21, 0xae, 0xde, 0x88, 0xd9, 0x12, 0x79, 0xf3, 0xf0, 0x4d, 0xf2, 0x05, 0xb4, 0x66, 0x72, 0x52,
0x28, 0xdf, 0x82, 0xe8, 0xe0, 0x0d, 0x0d, 0x6b, 0x6f, 0xf7, 0x7f, 0xce, 0xe7, 0x01, 0xae, 0xde, 0x10, 0xff, 0xde, 0xde, 0x76, 0x45, 0xcb, 0x87, 0xe7, 0x74, 0xcc, 0x0e, 0x4c, 0x27, 0x68, 0xef,
0x88, 0xd9, 0x12, 0x79, 0x74, 0xf0, 0x26, 0xf9, 0x1c, 0x9a, 0x33, 0x35, 0x29, 0x88, 0x7f, 0x6f, 0x40, 0x68, 0xb1, 0x16, 0xe6, 0x13, 0xbd, 0xfc, 0xd5, 0x80, 0xce, 0xa8, 0xe4, 0x58, 0x2c, 0x67,
0x77, 0xb3, 0xa2, 0xe5, 0xdd, 0x73, 0xba, 0x66, 0xfb, 0xa6, 0x12, 0x24, 0xdb, 0x17, 0x5a, 0x9c, 0x3a, 0xd0, 0x54, 0x63, 0xb3, 0xa6, 0xac, 0xb2, 0x9d, 0xa6, 0x18, 0x89, 0xd6, 0x4e, 0xf9, 0x4d,
0x71, 0xf3, 0x89, 0x56, 0xfe, 0x6a, 0x40, 0x67, 0x54, 0x72, 0x2c, 0x96, 0x33, 0x1d, 0xf4, 0x54, 0xad, 0x37, 0x5f, 0xd2, 0xfb, 0xd0, 0x53, 0x36, 0xe4, 0x58, 0xb8, 0x47, 0x41, 0x58, 0xe9, 0x8a,
0xe3, 0xfc, 0x9e, 0xb2, 0x9d, 0xed, 0x7a, 0x8a, 0x51, 0xd3, 0xda, 0x2d, 0x7f, 0x5e, 0xe9, 0xcd, 0x3e, 0x0f, 0xcd, 0x8c, 0x3a, 0x8e, 0x66, 0x32, 0x7d, 0xaf, 0xb3, 0xb9, 0xff, 0x0e, 0xd4, 0x1b,
0x97, 0xfa, 0x3e, 0xf4, 0x72, 0xeb, 0x72, 0x2c, 0xdc, 0xa3, 0x23, 0xcc, 0x74, 0x45, 0x9f, 0x87, 0x66, 0xc8, 0xdb, 0x08, 0xf4, 0xcd, 0x6f, 0xd3, 0xa5, 0x09, 0x76, 0xd8, 0x9f, 0x4d, 0xd8, 0x0e,
0x6a, 0xa6, 0x3b, 0x0e, 0x67, 0x2a, 0x7d, 0xaf, 0xe5, 0xdc, 0x7f, 0x07, 0x6a, 0x81, 0x59, 0xf2, 0x78, 0x1c, 0xa0, 0x16, 0xd9, 0xcc, 0xb1, 0x6d, 0x7c, 0x94, 0xed, 0x3d, 0x9a, 0x66, 0x86, 0x06,
0xd6, 0x03, 0xbd, 0x29, 0xda, 0x34, 0x34, 0x81, 0x84, 0xfd, 0x19, 0xc1, 0x66, 0xc0, 0x63, 0x1f, 0x65, 0xba, 0x99, 0xa9, 0x37, 0xa1, 0x09, 0xaa, 0xa4, 0x3c, 0xb6, 0x35, 0x36, 0x13, 0x94, 0x50,
0xb5, 0x90, 0x33, 0xc7, 0xb6, 0xf1, 0x51, 0xb6, 0xf7, 0x68, 0x9b, 0x19, 0x1a, 0x14, 0xe9, 0xf9, 0x50, 0xc5, 0xd6, 0xe6, 0x2a, 0xc6, 0xe1, 0xcd, 0x3c, 0x93, 0x6b, 0xfb, 0x7c, 0xae, 0xf5, 0xbb,
0x4c, 0xbd, 0x0a, 0x6d, 0xd0, 0x5c, 0xa9, 0x23, 0x9b, 0x63, 0xb3, 0x41, 0x09, 0x05, 0x59, 0x6c, 0x6b, 0xeb, 0xcc, 0xbb, 0xeb, 0x06, 0x74, 0x8e, 0x95, 0x9c, 0xd3, 0x84, 0x74, 0xaf, 0x1e, 0x8f,
0x9e, 0x9f, 0xc5, 0x56, 0x38, 0x99, 0x6b, 0xb1, 0xb6, 0x4f, 0xc7, 0x5a, 0xbf, 0xeb, 0x36, 0xd6, 0xcf, 0xd5, 0xa7, 0x7b, 0xbe, 0x3e, 0xc1, 0x2c, 0x80, 0x8f, 0xcc, 0x82, 0x6f, 0x20, 0x59, 0x2b,
0xde, 0x75, 0xd7, 0xa1, 0x73, 0x94, 0xab, 0x39, 0x6d, 0x48, 0xf7, 0xaa, 0xf2, 0xf8, 0x54, 0x7e, 0x62, 0x91, 0xdc, 0x0d, 0xef, 0xfb, 0x60, 0xbd, 0x8c, 0xd6, 0xce, 0xde, 0xfa, 0x1d, 0xe8, 0xb8,
0xba, 0xa7, 0xf3, 0x13, 0xec, 0x02, 0xf8, 0xc8, 0x2e, 0xf8, 0x1a, 0x92, 0x33, 0x49, 0x2c, 0x92, 0x61, 0x4e, 0x77, 0xd5, 0x70, 0xf3, 0xef, 0x1f, 0x0b, 0xd8, 0x2e, 0x5c, 0xe7, 0x78, 0x72, 0x80,
0xbb, 0xe1, 0xbc, 0x0f, 0xce, 0xa6, 0xd1, 0xea, 0xd9, 0xa9, 0xdf, 0x86, 0x8e, 0x5b, 0xe6, 0x34, 0xa9, 0x1c, 0xd3, 0x4b, 0x2c, 0x78, 0x7b, 0x6c, 0x7c, 0xed, 0xb0, 0x2f, 0xa1, 0xfb, 0xba, 0x40,
0xab, 0x86, 0x9b, 0x7f, 0x5f, 0x59, 0xc0, 0x76, 0xe0, 0x1a, 0xc7, 0xe3, 0x7d, 0x4c, 0xd5, 0x98, 0x45, 0x4f, 0x37, 0x32, 0x91, 0x8b, 0x2c, 0xad, 0x4c, 0x0c, 0x30, 0x5f, 0x97, 0x54, 0xe6, 0x1a,
0x5e, 0x7a, 0xc1, 0xdb, 0xe3, 0xdc, 0xd7, 0x14, 0xfb, 0x02, 0xba, 0xaf, 0x0b, 0xcc, 0xe9, 0x69, 0xdd, 0x5c, 0xe8, 0x72, 0x0f, 0xd9, 0x4f, 0xd0, 0x7b, 0xbd, 0x98, 0x28, 0x31, 0xc6, 0xe7, 0xa8,
0x48, 0x2a, 0x6a, 0x21, 0xd3, 0x4a, 0xc5, 0x00, 0xf3, 0x75, 0x49, 0x55, 0xa6, 0xd1, 0xed, 0x85, 0x85, 0x29, 0x61, 0xa1, 0x85, 0xd2, 0x59, 0x3e, 0x21, 0x0f, 0x1d, 0x5e, 0x61, 0xe3, 0xe4, 0x14,
0x2e, 0xf7, 0x90, 0xfd, 0x08, 0xbd, 0xd7, 0x8b, 0x49, 0x2e, 0xc6, 0xf8, 0x1c, 0xb5, 0x30, 0x29, 0x55, 0xe1, 0x87, 0x79, 0x97, 0x7b, 0x78, 0xd1, 0x28, 0x7f, 0x78, 0xeb, 0xc7, 0xcf, 0x26, 0x99,
0xa4, 0x0a, 0xc8, 0x6c, 0x42, 0x16, 0x3a, 0xbc, 0xc2, 0xc6, 0xc8, 0x09, 0xe6, 0x85, 0x5f, 0xe6, 0x9e, 0x2e, 0x8f, 0x86, 0xa9, 0x9c, 0xef, 0xee, 0xef, 0xa7, 0xf9, 0x6e, 0x3a, 0x15, 0x59, 0xbe,
0x5d, 0xee, 0xe1, 0x45, 0xab, 0xfc, 0xe1, 0xad, 0x1f, 0xfe, 0x3f, 0x91, 0x7a, 0xba, 0x3c, 0x1c, 0xbf, 0xbf, 0x4b, 0x45, 0x3a, 0x6a, 0xd3, 0xbf, 0xb0, 0xfd, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff,
0xa6, 0x6a, 0xbe, 0xb3, 0xb7, 0x97, 0x66, 0x3b, 0xe9, 0x54, 0xc8, 0x6c, 0x6f, 0x6f, 0x87, 0x92, 0xba, 0x68, 0x0f, 0x9b, 0xaf, 0x0d, 0x00, 0x00,
0x74, 0xd8, 0xa6, 0x7f, 0x79, 0x7b, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf0, 0xd8, 0xd1, 0xa5,
0x0f, 0x0e, 0x00, 0x00,
} }
...@@ -134,6 +134,7 @@ func RunChain33(name string) { ...@@ -134,6 +134,7 @@ func RunChain33(name string) {
//开始区块链模块加载 //开始区块链模块加载
//channel, rabitmq 等 //channel, rabitmq 等
version.SetLocalDBVersion(cfg.Store.LocalDBVersion) version.SetLocalDBVersion(cfg.Store.LocalDBVersion)
version.SetStoreDBVersion(cfg.Store.StoreDBVersion)
version.SetAppVersion(cfg.Version) version.SetAppVersion(cfg.Version)
log.Info(cfg.Title + "-app:" + version.GetAppVersion() + " chain33:" + version.GetVersion() + " localdb:" + version.GetLocalDBVersion()) log.Info(cfg.Title + "-app:" + version.GetAppVersion() + " chain33:" + version.GetVersion() + " localdb:" + version.GetLocalDBVersion())
log.Info("loading queue") log.Info("loading queue")
...@@ -155,12 +156,13 @@ func RunChain33(name string) { ...@@ -155,12 +156,13 @@ func RunChain33(name string) {
log.Info("loading blockchain module") log.Info("loading blockchain module")
chain := blockchain.New(cfg.BlockChain) chain := blockchain.New(cfg.BlockChain)
chain.SetQueueClient(q.Client()) chain.SetQueueClient(q.Client())
chain.UpgradeChain()
log.Info("loading store module") log.Info("loading store module")
s := store.New(cfg.Store, sub.Store) s := store.New(cfg.Store, sub.Store)
s.SetQueueClient(q.Client()) s.SetQueueClient(q.Client())
chain.Upgrade()
log.Info("loading consensus module") log.Info("loading consensus module")
cs := consensus.New(cfg.Consensus, sub.Consensus) cs := consensus.New(cfg.Consensus, sub.Consensus)
cs.SetQueueClient(q.Client()) cs.SetQueueClient(q.Client())
......
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