Unverified Commit 1ad3a042 authored by vipwzw's avatar vipwzw Committed by GitHub

Merge pull request #624 from linj-disanbo/retrieve-support-more-assets

Retrieve support more assets
parents dfac9364 ba56fc97
......@@ -224,6 +224,7 @@ ForkTicketVrf =0
[fork.sub.retrieve]
Enable=0
ForkRetrive=0
ForkRetriveAsset=0
[fork.sub.hashlock]
Enable=0
......
......@@ -107,6 +107,19 @@ func addRetrieveCmdFlags(cmd *cobra.Command) {
cmd.Flags().Float64P("fee", "f", defaultFee, "sign address")
}
func addPerformCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("backup", "b", "", "backup address")
cmd.MarkFlagRequired("backup")
cmd.Flags().StringP("default", "t", "", "default address")
cmd.MarkFlagRequired("default")
cmd.Flags().StringArrayP("exec", "e", []string{}, "asset exec")
cmd.Flags().StringArrayP("symbol", "s", []string{}, "asset symbol")
defaultFee := float64(types.GInt("MinFee")) / float64(types.Coin)
cmd.Flags().Float64P("fee", "f", defaultFee, "sign address")
}
func prepareCmd(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
backup, _ := cmd.Flags().GetString("backup")
......@@ -130,7 +143,7 @@ func PerformCmd() *cobra.Command {
Short: "Perform the retrieve",
Run: performCmd,
}
addRetrieveCmdFlags(cmd)
addPerformCmdFlags(cmd)
return cmd
}
......@@ -140,12 +153,24 @@ func performCmd(cmd *cobra.Command, args []string) {
defaultAddr, _ := cmd.Flags().GetString("default")
fee, _ := cmd.Flags().GetFloat64("fee")
execs, _ := cmd.Flags().GetStringArray("exec")
symbols, _ := cmd.Flags().GetStringArray("symbol")
feeInt64 := int64(fee*types.InputPrecision) * types.Multiple1E4
params := rpc.RetrievePerformTx{
BackupAddr: backup,
DefaultAddr: defaultAddr,
Assets: []rpc.Asset{},
Fee: feeInt64,
}
if len(execs) != len(symbols) {
fmt.Printf("exec count must equal to symbol count\n")
return
}
for i := 0; i < len(execs); i++ {
params.Assets = append(params.Assets, rpc.Asset{Exec: execs[i], Symbol: symbols[0]})
}
ctx := jsonrpc.NewRPCCtx(rpcLaddr, "retrieve.CreateRawRetrievePerformTx", params, nil)
ctx.RunWithoutMarshal()
}
......
......@@ -53,7 +53,7 @@ func (c *Retrieve) ExecDelLocal_Backup(backup *rt.BackupRetrieve, tx *types.Tran
set := &types.LocalDBSet{}
rlog.Debug("Retrieve ExecDelLocal_Backup")
info := rt.RetrieveQuery{BackupAddress: backup.BackupAddress, DefaultAddress: backup.DefaultAddress, DelayPeriod: backup.DelayPeriod, PrepareTime: zeroPrepareTime, RemainTime: zeroRemainTime, Status: retrieveBackup}
info := createRetrieve(backup.BackupAddress, backup.DefaultAddress, retrieveBackup)
kv, err := DelRetrieveInfo(&info, retrieveBackup, c.GetLocalDB())
if err != nil {
return set, nil
......@@ -71,7 +71,7 @@ func (c *Retrieve) ExecDelLocal_Prepare(pre *rt.PrepareRetrieve, tx *types.Trans
set := &types.LocalDBSet{}
rlog.Debug("Retrieve ExecDelLocal_Prepare")
info := rt.RetrieveQuery{BackupAddress: pre.BackupAddress, DefaultAddress: pre.DefaultAddress, DelayPeriod: zeroDelay, PrepareTime: c.GetBlockTime(), RemainTime: zeroRemainTime, Status: retrievePrepare}
info := createRetrieve(pre.BackupAddress, pre.DefaultAddress, retrievePrepare)
kv, err := DelRetrieveInfo(&info, retrievePrepare, c.GetLocalDB())
if err != nil {
return set, nil
......@@ -89,12 +89,23 @@ func (c *Retrieve) ExecDelLocal_Perform(perf *rt.PerformRetrieve, tx *types.Tran
set := &types.LocalDBSet{}
rlog.Debug("Retrieve ExecDelLocal_Perform")
info := rt.RetrieveQuery{BackupAddress: perf.BackupAddress, DefaultAddress: perf.DefaultAddress, DelayPeriod: zeroDelay, PrepareTime: zeroPrepareTime, RemainTime: zeroRemainTime, Status: retrievePerform}
info := createRetrieve(perf.BackupAddress, perf.DefaultAddress, retrievePerform)
kv, err := DelRetrieveInfo(&info, retrievePerform, c.GetLocalDB())
if err != nil {
return set, nil
}
if types.IsDappFork(c.GetHeight(), rt.RetrieveX, rt.ForkRetriveAssetX) {
if len(perf.Assets) == 0 {
perf.Assets = append(perf.Assets, &types.Asset{Exec: "coins", Symbol: types.GetCoinSymbol()})
}
}
for _, asset := range perf.Assets {
kv := &types.KeyValue{Key: calcRetrieveAssetKey(info.BackupAddress, info.DefaultAddress, asset.Exec, asset.Symbol), Value: nil}
c.GetLocalDB().Set(kv.Key, kv.Value)
set.KV = append(set.KV, kv)
}
if kv != nil {
set.KV = append(set.KV, kv)
}
......@@ -107,7 +118,7 @@ func (c *Retrieve) ExecDelLocal_Cancel(cancel *rt.CancelRetrieve, tx *types.Tran
set := &types.LocalDBSet{}
rlog.Debug("Retrieve ExecDelLocal_Cancel")
info := rt.RetrieveQuery{BackupAddress: cancel.BackupAddress, DefaultAddress: cancel.DefaultAddress, DelayPeriod: zeroDelay, PrepareTime: zeroPrepareTime, RemainTime: zeroRemainTime, Status: retrieveCancel}
info := createRetrieve(cancel.BackupAddress, cancel.DefaultAddress, retrieveCancel)
kv, err := DelRetrieveInfo(&info, retrieveCancel, c.GetLocalDB())
if err != nil {
return set, nil
......
......@@ -10,6 +10,10 @@ import (
rt "github.com/33cn/plugin/plugin/dapp/retrieve/types"
)
func createRetrieve(backupAddress, defaultAddress string, status int32) rt.RetrieveQuery {
return rt.RetrieveQuery{BackupAddress: backupAddress, DefaultAddress: defaultAddress, DelayPeriod: zeroDelay, PrepareTime: zeroPrepareTime, RemainTime: zeroRemainTime, Status: status}
}
// SaveRetrieveInfo local
func SaveRetrieveInfo(info *rt.RetrieveQuery, Status int64, db dbm.KVDB) (*types.KeyValue, error) {
rlog.Debug("Retrieve SaveRetrieveInfo", "backupaddr", info.BackupAddress, "defaddr", info.DefaultAddress)
......@@ -55,7 +59,8 @@ func SaveRetrieveInfo(info *rt.RetrieveQuery, Status int64, db dbm.KVDB) (*types
func (c *Retrieve) ExecLocal_Backup(backup *rt.BackupRetrieve, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
set := &types.LocalDBSet{}
rlog.Debug("Retrieve ExecLocal_Backup")
info := rt.RetrieveQuery{BackupAddress: backup.BackupAddress, DefaultAddress: backup.DefaultAddress, DelayPeriod: backup.DelayPeriod, PrepareTime: zeroPrepareTime, RemainTime: zeroRemainTime, Status: retrieveBackup}
info := createRetrieve(backup.BackupAddress, backup.DefaultAddress, retrieveBackup)
info.DelayPeriod = backup.DelayPeriod
kv, err := SaveRetrieveInfo(&info, retrieveBackup, c.GetLocalDB())
if err != nil {
return set, nil
......@@ -73,7 +78,8 @@ func (c *Retrieve) ExecLocal_Prepare(pre *rt.PrepareRetrieve, tx *types.Transact
set := &types.LocalDBSet{}
rlog.Debug("Retrieve ExecLocal_Prepare")
info := rt.RetrieveQuery{BackupAddress: pre.BackupAddress, DefaultAddress: pre.DefaultAddress, DelayPeriod: zeroDelay, PrepareTime: zeroPrepareTime, RemainTime: zeroRemainTime, Status: retrievePrepare}
info := createRetrieve(pre.BackupAddress, pre.DefaultAddress, retrievePrepare)
info.PrepareTime = c.GetBlockTime()
kv, err := SaveRetrieveInfo(&info, retrievePrepare, c.GetLocalDB())
if err != nil {
return set, nil
......@@ -91,11 +97,22 @@ func (c *Retrieve) ExecLocal_Perform(perf *rt.PerformRetrieve, tx *types.Transac
set := &types.LocalDBSet{}
rlog.Debug("Retrieve ExecLocal_Perf")
info := rt.RetrieveQuery{BackupAddress: perf.BackupAddress, DefaultAddress: perf.DefaultAddress, DelayPeriod: zeroDelay, PrepareTime: zeroPrepareTime, RemainTime: zeroRemainTime, Status: retrievePerform}
info := createRetrieve(perf.BackupAddress, perf.DefaultAddress, retrievePerform)
kv, err := SaveRetrieveInfo(&info, retrievePerform, c.GetLocalDB())
if err != nil {
return set, nil
}
if types.IsDappFork(c.GetHeight(), rt.RetrieveX, rt.ForkRetriveAssetX) {
if len(perf.Assets) == 0 {
perf.Assets = append(perf.Assets, &types.Asset{Exec: "coins", Symbol: types.GetCoinSymbol()})
}
}
for _, asset := range perf.Assets {
value := types.Encode(&info)
kv := &types.KeyValue{Key: calcRetrieveAssetKey(info.BackupAddress, info.DefaultAddress, asset.Exec, asset.Symbol), Value: value}
c.GetLocalDB().Set(kv.Key, kv.Value)
set.KV = append(set.KV, kv)
}
if kv != nil {
set.KV = append(set.KV, kv)
......@@ -109,7 +126,7 @@ func (c *Retrieve) ExecLocal_Cancel(cancel *rt.CancelRetrieve, tx *types.Transac
set := &types.LocalDBSet{}
rlog.Debug("Retrieve ExecLocal_Cancel")
info := rt.RetrieveQuery{BackupAddress: cancel.BackupAddress, DefaultAddress: cancel.DefaultAddress, DelayPeriod: zeroDelay, PrepareTime: zeroPrepareTime, RemainTime: zeroRemainTime, Status: retrieveCancel}
info := createRetrieve(cancel.BackupAddress, cancel.DefaultAddress, retrieveCancel)
kv, err := SaveRetrieveInfo(&info, retrieveCancel, c.GetLocalDB())
if err != nil {
return set, nil
......
......@@ -5,6 +5,8 @@
package executor
import (
"fmt"
"github.com/33cn/chain33/types"
rt "github.com/33cn/plugin/plugin/dapp/retrieve/types"
)
......@@ -22,5 +24,32 @@ func (r *Retrieve) Query_GetRetrieveInfo(in *rt.ReqRetrieveInfo) (types.Message,
info.RemainTime = 0
}
}
// 在指定asset 的情况下, 显示具体asset 的找回状态
if info.Status == retrievePerform && in.GetAssetExec() != "" {
// retrievePerform状态下,不存在有两种情况
// 1 还没找回, 2 fork 之前是没有coins 找回记录的
count := r.GetLocalDB().PrefixCount(calcRetrieveAssetPrefix(in.BackupAddress, in.DefaultAddress))
// 2 fork 之前是 没有coins 找回记录的, 相当于都找回了
if count == 0 {
return info, nil
}
asset, _ := getRetrieveAsset(r.GetLocalDB(), in.BackupAddress, in.DefaultAddress, in.AssetExec, in.AssetSymbol)
if asset != nil {
return asset, nil
}
// 1 还没找回
info.Status = retrievePrepare
info.RemainTime = zeroRemainTime
return info, nil
}
return info, nil
}
func calcRetrieveAssetPrefix(backupAddr, defaultAddr string) []byte {
key := fmt.Sprintf("LODB-retrieve-backup-asset:%s:%s:", backupAddr, defaultAddr)
return []byte(key)
}
......@@ -69,9 +69,22 @@ func calcRetrieveKey(backupAddr string, defaultAddr string) []byte {
return []byte(key)
}
func calcRetrieveAssetKey(backupAddr, defaultAddr, assetExec, assetSymbol string) []byte {
key := fmt.Sprintf("LODB-retrieve-backup-asset:%s:%s:%s:%s", backupAddr, defaultAddr, assetExec, assetSymbol)
return []byte(key)
}
func getRetrieveAsset(db dbm.KVDB, backupAddr, defaultAddr, assetExec, assetSymbol string) (*rt.RetrieveQuery, error) {
return getRetrieve(db, calcRetrieveAssetKey(backupAddr, defaultAddr, assetExec, assetSymbol))
}
func getRetrieveInfo(db dbm.KVDB, backupAddr string, defaultAddr string) (*rt.RetrieveQuery, error) {
return getRetrieve(db, calcRetrieveKey(backupAddr, defaultAddr))
}
func getRetrieve(db dbm.KVDB, key []byte) (*rt.RetrieveQuery, error) {
info := rt.RetrieveQuery{}
retInfo, err := db.Get(calcRetrieveKey(backupAddr, defaultAddr))
retInfo, err := db.Get(key)
if err != nil {
return nil, err
}
......
......@@ -116,7 +116,7 @@ func (action *Action) RetrieveBackup(backupRet *rt.BackupRetrieve) (*types.Recei
var receipt *types.Receipt
var r *DB
var newRetrieve = false
if types.IsDappFork(action.height, rt.RetrieveX, "ForkRetrive") {
if types.IsDappFork(action.height, rt.RetrieveX, rt.ForkRetriveX) {
if err := address.CheckAddress(backupRet.BackupAddress); err != nil {
rlog.Debug("retrieve checkaddress")
return nil, err
......@@ -203,6 +203,43 @@ func (action *Action) RetrievePrepare(preRet *rt.PrepareRetrieve) (*types.Receip
return receipt, nil
}
// RetrievePerformAssets Action
func (action *Action) RetrievePerformAssets(perfRet *rt.PerformRetrieve, defaultAddress string) (*types.Receipt, error) {
var logs []*types.ReceiptLog
var kv []*types.KeyValue
var receipt *types.Receipt
// 兼容原来的找回, 在不指定的情况下,找回主币
if len(perfRet.Assets) == 0 {
perfRet.Assets = append(perfRet.Assets, &types.Asset{Exec: "coins", Symbol: types.GetCoinSymbol()})
//return nil, nil
}
for _, asset := range perfRet.Assets {
accdb, err := account.NewAccountDB(asset.Exec, asset.Symbol, action.db)
if err != nil {
rlog.Error("RetrievePerform", "NewAccountDB", err)
return nil, err
}
acc := accdb.LoadExecAccount(defaultAddress, action.execaddr)
rlog.Debug("RetrievePerform", "acc.Balance", acc.Balance)
if acc.Balance > 0 {
receipt, err = action.coinsAccount.ExecTransfer(defaultAddress, perfRet.BackupAddress, action.execaddr, acc.Balance)
if err != nil {
rlog.Debug("RetrievePerform", "ExecTransfer", err)
return nil, err
}
logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...)
} else {
return nil, rt.ErrRetrieveNoBalance
}
}
receipt = &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}
return receipt, nil
}
// RetrievePerform Action
func (action *Action) RetrievePerform(perfRet *rt.PerformRetrieve) (*types.Receipt, error) {
var logs []*types.ReceiptLog
......@@ -239,6 +276,10 @@ func (action *Action) RetrievePerform(perfRet *rt.PerformRetrieve) (*types.Recei
return nil, rt.ErrRetrievePeriodLimit
}
if types.IsDappFork(action.height, rt.RetrieveX, rt.ForkRetriveAssetX) {
return action.RetrievePerformAssets(perfRet, r.RetPara[index].DefaultAddress)
}
acc = action.coinsAccount.LoadExecAccount(r.RetPara[index].DefaultAddress, action.execaddr)
rlog.Debug("RetrievePerform", "acc.Balance", acc.Balance)
if acc.Balance > 0 {
......
......@@ -43,6 +43,7 @@ message PrepareRetrieve {
message PerformRetrieve {
string backupAddress = 1;
string defaultAddress = 2;
repeated Asset assets = 3;
}
message CancelRetrieve {
......@@ -53,6 +54,8 @@ message CancelRetrieve {
message ReqRetrieveInfo {
string backupAddress = 1;
string defaultAddress = 2;
string assetExec = 3;
string assetSymbol = 4;
}
message RetrieveQuery {
......
......@@ -19,11 +19,18 @@ type RetrievePrepareTx struct {
Fee int64 `json:"fee"`
}
// Asset Asset
type Asset struct {
Exec string `json:"exec"`
Symbol string `json:"symbol"`
}
// RetrievePerformTx construction
type RetrievePerformTx struct {
BackupAddr string `json:"backupAddr"`
DefaultAddr string `json:"defaultAddr"`
Fee int64 `json:"fee"`
BackupAddr string `json:"backupAddr"`
DefaultAddr string `json:"defaultAddr"`
Assets []Asset `json:"assets"`
Fee int64 `json:"fee"`
}
// RetrieveCancelTx construction
......
......@@ -35,6 +35,9 @@ var (
"Backup": RetrieveActionBackup,
"Cancel": RetrieveActionCancel,
}
ForkRetriveAssetX = "ForkRetriveAsset"
ForkRetriveX = "ForkRetrive"
)
func init() {
......
......@@ -44,7 +44,7 @@ func (m *RetrievePara) Reset() { *m = RetrievePara{} }
func (m *RetrievePara) String() string { return proto.CompactTextString(m) }
func (*RetrievePara) ProtoMessage() {}
func (*RetrievePara) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{0}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{0}
}
func (m *RetrievePara) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RetrievePara.Unmarshal(m, b)
......@@ -112,7 +112,7 @@ func (m *Retrieve) Reset() { *m = Retrieve{} }
func (m *Retrieve) String() string { return proto.CompactTextString(m) }
func (*Retrieve) ProtoMessage() {}
func (*Retrieve) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{1}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{1}
}
func (m *Retrieve) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Retrieve.Unmarshal(m, b)
......@@ -163,7 +163,7 @@ func (m *RetrieveAction) Reset() { *m = RetrieveAction{} }
func (m *RetrieveAction) String() string { return proto.CompactTextString(m) }
func (*RetrieveAction) ProtoMessage() {}
func (*RetrieveAction) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{2}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{2}
}
func (m *RetrieveAction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RetrieveAction.Unmarshal(m, b)
......@@ -378,7 +378,7 @@ func (m *BackupRetrieve) Reset() { *m = BackupRetrieve{} }
func (m *BackupRetrieve) String() string { return proto.CompactTextString(m) }
func (*BackupRetrieve) ProtoMessage() {}
func (*BackupRetrieve) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{3}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{3}
}
func (m *BackupRetrieve) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BackupRetrieve.Unmarshal(m, b)
......@@ -431,7 +431,7 @@ func (m *PrepareRetrieve) Reset() { *m = PrepareRetrieve{} }
func (m *PrepareRetrieve) String() string { return proto.CompactTextString(m) }
func (*PrepareRetrieve) ProtoMessage() {}
func (*PrepareRetrieve) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{4}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{4}
}
func (m *PrepareRetrieve) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrepareRetrieve.Unmarshal(m, b)
......@@ -466,18 +466,19 @@ func (m *PrepareRetrieve) GetDefaultAddress() string {
}
type PerformRetrieve struct {
BackupAddress string `protobuf:"bytes,1,opt,name=backupAddress,proto3" json:"backupAddress,omitempty"`
DefaultAddress string `protobuf:"bytes,2,opt,name=defaultAddress,proto3" json:"defaultAddress,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
BackupAddress string `protobuf:"bytes,1,opt,name=backupAddress,proto3" json:"backupAddress,omitempty"`
DefaultAddress string `protobuf:"bytes,2,opt,name=defaultAddress,proto3" json:"defaultAddress,omitempty"`
Assets []*types.Asset `protobuf:"bytes,3,rep,name=assets,proto3" json:"assets,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *PerformRetrieve) Reset() { *m = PerformRetrieve{} }
func (m *PerformRetrieve) String() string { return proto.CompactTextString(m) }
func (*PerformRetrieve) ProtoMessage() {}
func (*PerformRetrieve) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{5}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{5}
}
func (m *PerformRetrieve) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PerformRetrieve.Unmarshal(m, b)
......@@ -511,6 +512,13 @@ func (m *PerformRetrieve) GetDefaultAddress() string {
return ""
}
func (m *PerformRetrieve) GetAssets() []*types.Asset {
if m != nil {
return m.Assets
}
return nil
}
type CancelRetrieve struct {
BackupAddress string `protobuf:"bytes,1,opt,name=backupAddress,proto3" json:"backupAddress,omitempty"`
DefaultAddress string `protobuf:"bytes,2,opt,name=defaultAddress,proto3" json:"defaultAddress,omitempty"`
......@@ -523,7 +531,7 @@ func (m *CancelRetrieve) Reset() { *m = CancelRetrieve{} }
func (m *CancelRetrieve) String() string { return proto.CompactTextString(m) }
func (*CancelRetrieve) ProtoMessage() {}
func (*CancelRetrieve) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{6}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{6}
}
func (m *CancelRetrieve) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelRetrieve.Unmarshal(m, b)
......@@ -560,6 +568,8 @@ func (m *CancelRetrieve) GetDefaultAddress() string {
type ReqRetrieveInfo struct {
BackupAddress string `protobuf:"bytes,1,opt,name=backupAddress,proto3" json:"backupAddress,omitempty"`
DefaultAddress string `protobuf:"bytes,2,opt,name=defaultAddress,proto3" json:"defaultAddress,omitempty"`
AssetExec string `protobuf:"bytes,3,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
AssetSymbol string `protobuf:"bytes,4,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -569,7 +579,7 @@ func (m *ReqRetrieveInfo) Reset() { *m = ReqRetrieveInfo{} }
func (m *ReqRetrieveInfo) String() string { return proto.CompactTextString(m) }
func (*ReqRetrieveInfo) ProtoMessage() {}
func (*ReqRetrieveInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{7}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{7}
}
func (m *ReqRetrieveInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqRetrieveInfo.Unmarshal(m, b)
......@@ -603,6 +613,20 @@ func (m *ReqRetrieveInfo) GetDefaultAddress() string {
return ""
}
func (m *ReqRetrieveInfo) GetAssetExec() string {
if m != nil {
return m.AssetExec
}
return ""
}
func (m *ReqRetrieveInfo) GetAssetSymbol() string {
if m != nil {
return m.AssetSymbol
}
return ""
}
type RetrieveQuery struct {
BackupAddress string `protobuf:"bytes,1,opt,name=backupAddress,proto3" json:"backupAddress,omitempty"`
DefaultAddress string `protobuf:"bytes,2,opt,name=defaultAddress,proto3" json:"defaultAddress,omitempty"`
......@@ -619,7 +643,7 @@ func (m *RetrieveQuery) Reset() { *m = RetrieveQuery{} }
func (m *RetrieveQuery) String() string { return proto.CompactTextString(m) }
func (*RetrieveQuery) ProtoMessage() {}
func (*RetrieveQuery) Descriptor() ([]byte, []int) {
return fileDescriptor_retrieve_2bd2296d20e0c70f, []int{8}
return fileDescriptor_retrieve_7b99e170a1cce215, []int{8}
}
func (m *RetrieveQuery) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RetrieveQuery.Unmarshal(m, b)
......@@ -864,38 +888,41 @@ var _Retrieve_serviceDesc = grpc.ServiceDesc{
Metadata: "retrieve.proto",
}
func init() { proto.RegisterFile("retrieve.proto", fileDescriptor_retrieve_2bd2296d20e0c70f) }
var fileDescriptor_retrieve_2bd2296d20e0c70f = []byte{
// 471 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x54, 0xcd, 0x6e, 0xd3, 0x40,
0x10, 0xee, 0x3a, 0xd8, 0x29, 0x13, 0xea, 0x8a, 0x45, 0x54, 0x56, 0x0f, 0x95, 0x65, 0x21, 0x94,
0x0b, 0x41, 0x32, 0xbc, 0x40, 0xcb, 0x05, 0x6e, 0x61, 0x55, 0xae, 0xa0, 0xad, 0x3d, 0x41, 0x16,
0x8e, 0x6d, 0xd6, 0xeb, 0x0a, 0xdf, 0x78, 0x26, 0xde, 0x86, 0x0b, 0x2f, 0xc1, 0x0b, 0xa0, 0xec,
0x8f, 0x58, 0x07, 0x47, 0xca, 0xc1, 0xe2, 0xe8, 0xcf, 0xdf, 0xb7, 0x33, 0xfb, 0xed, 0xcc, 0x07,
0xa1, 0x40, 0x29, 0x0a, 0xbc, 0xc7, 0x55, 0x23, 0x6a, 0x59, 0x53, 0x5f, 0xf6, 0x0d, 0xb6, 0x97,
0x8f, 0xa5, 0xe0, 0x55, 0xcb, 0x33, 0x59, 0xd4, 0x95, 0xfe, 0x93, 0xfc, 0x20, 0xf0, 0x88, 0x19,
0xf2, 0x9a, 0x0b, 0x4e, 0x9f, 0x43, 0x98, 0xe3, 0x86, 0x77, 0xa5, 0xbc, 0xce, 0x73, 0x81, 0x6d,
0x1b, 0x91, 0x98, 0x2c, 0x1f, 0xb2, 0x3d, 0x94, 0x5e, 0x40, 0xd0, 0x4a, 0x2e, 0xbb, 0x36, 0xf2,
0x62, 0xb2, 0xf4, 0x99, 0xf9, 0xa2, 0x57, 0x00, 0x99, 0x40, 0x2e, 0xf1, 0xb6, 0xd8, 0x62, 0x34,
0x8b, 0xc9, 0x72, 0xc6, 0x1c, 0x84, 0xc6, 0xb0, 0x68, 0x04, 0x36, 0x5c, 0x68, 0xc2, 0x03, 0x45,
0x70, 0xa1, 0x1d, 0x23, 0xc7, 0x92, 0xf7, 0x6b, 0x14, 0x45, 0x9d, 0x47, 0xbe, 0x66, 0x38, 0x50,
0xf2, 0x09, 0x4e, 0x6d, 0xcf, 0xf4, 0x19, 0x9c, 0xdd, 0xf1, 0xec, 0x4b, 0xd7, 0x0c, 0xdb, 0x1d,
0x82, 0xf4, 0x05, 0xcc, 0x05, 0xca, 0xdd, 0x05, 0x23, 0x2f, 0x9e, 0x2d, 0x17, 0xe9, 0x93, 0x95,
0xb2, 0x64, 0xe5, 0xde, 0x9d, 0x59, 0x4e, 0xf2, 0x9b, 0x40, 0x68, 0xff, 0x5c, 0x2b, 0xbb, 0x68,
0x0a, 0x73, 0xd3, 0xa4, 0xaa, 0xb0, 0x48, 0x2f, 0xcc, 0x09, 0x6b, 0x8d, 0x5a, 0xfa, 0xdb, 0x13,
0x66, 0x89, 0x4a, 0x83, 0x62, 0x53, 0x8b, 0xad, 0x32, 0xc9, 0xd1, 0x68, 0x74, 0xa0, 0xd1, 0x10,
0x7d, 0x09, 0x81, 0x6e, 0x5d, 0x79, 0xb7, 0x48, 0x9f, 0x1a, 0xc9, 0x8d, 0x02, 0x1d, 0x85, 0xa1,
0xed, 0x04, 0x19, 0xaf, 0x32, 0x2c, 0x95, 0x97, 0x7f, 0x05, 0x6f, 0x14, 0xe8, 0x0a, 0x34, 0x8d,
0x86, 0xe0, 0xc9, 0x5e, 0xd9, 0xea, 0x33, 0x4f, 0xf6, 0x37, 0x73, 0xf0, 0xef, 0x79, 0xd9, 0x61,
0xf2, 0x9d, 0x40, 0x38, 0x2c, 0x73, 0xa4, 0xbb, 0xff, 0xce, 0x8c, 0x37, 0x3a, 0x33, 0x7b, 0x2f,
0x3b, 0x1b, 0x7b, 0xd9, 0xf3, 0x3d, 0x3f, 0xa7, 0x6d, 0x41, 0x15, 0x18, 0x9a, 0x3f, 0x71, 0x81,
0x8f, 0x10, 0x0e, 0x9d, 0x9f, 0xfe, 0x02, 0x0c, 0xbf, 0xda, 0xc3, 0xdf, 0x55, 0x9b, 0x7a, 0xe2,
0x02, 0x3f, 0x09, 0x9c, 0xd9, 0xe3, 0xdf, 0x77, 0x28, 0xfa, 0xff, 0x3d, 0x04, 0x47, 0x44, 0xc4,
0x15, 0x80, 0xc0, 0x2d, 0x2f, 0x2a, 0x45, 0xd0, 0x09, 0xe1, 0x20, 0x4e, 0x38, 0x05, 0x6e, 0x38,
0xa5, 0xbf, 0x08, 0x9c, 0xda, 0x68, 0xa4, 0xaf, 0x61, 0x6e, 0x66, 0x8d, 0x1e, 0xd8, 0xe5, 0xcb,
0x73, 0x83, 0x7f, 0xa8, 0xda, 0xe2, 0x73, 0x75, 0xfb, 0x2d, 0x39, 0x51, 0x2a, 0xb3, 0xaa, 0x07,
0xb6, 0x79, 0x4c, 0x95, 0x42, 0xa0, 0x37, 0x8b, 0x8e, 0xef, 0xf3, 0x01, 0x8d, 0x9e, 0x24, 0x3a,
0xbe, 0xd2, 0x23, 0x9a, 0xbb, 0x40, 0xa5, 0xfa, 0xab, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x01,
0x17, 0x39, 0x99, 0x01, 0x06, 0x00, 0x00,
func init() { proto.RegisterFile("retrieve.proto", fileDescriptor_retrieve_7b99e170a1cce215) }
var fileDescriptor_retrieve_7b99e170a1cce215 = []byte{
// 527 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xd1, 0x6e, 0xd3, 0x30,
0x14, 0x9d, 0x5b, 0x9a, 0xae, 0xb7, 0x5b, 0x2a, 0x8c, 0x98, 0xa2, 0x09, 0x4d, 0x55, 0x34, 0xa1,
0xbe, 0x50, 0xa4, 0xc0, 0x0f, 0x74, 0x08, 0x09, 0xde, 0x8a, 0x19, 0xaf, 0x20, 0x37, 0xb9, 0x45,
0x11, 0x6d, 0x12, 0x6c, 0x67, 0x5a, 0xde, 0x78, 0xe1, 0x3b, 0xf8, 0x07, 0xfe, 0x86, 0x17, 0x7e,
0x82, 0x1f, 0x40, 0xb1, 0x1d, 0xcd, 0x29, 0xa9, 0xb4, 0x87, 0x8a, 0xc7, 0x1c, 0x9f, 0x63, 0xdf,
0x7b, 0xee, 0xed, 0x29, 0xf8, 0x02, 0x95, 0x48, 0xf1, 0x06, 0xe7, 0x85, 0xc8, 0x55, 0x4e, 0x07,
0xaa, 0x2a, 0x50, 0x9e, 0x3f, 0x54, 0x82, 0x67, 0x92, 0xc7, 0x2a, 0xcd, 0x33, 0x73, 0x12, 0xfe,
0x24, 0x70, 0xc2, 0x2c, 0x79, 0xc9, 0x05, 0xa7, 0x4f, 0xc1, 0x4f, 0x70, 0xcd, 0xcb, 0x8d, 0x5a,
0x24, 0x89, 0x40, 0x29, 0x03, 0x32, 0x25, 0xb3, 0x11, 0xdb, 0x41, 0xe9, 0x19, 0x78, 0x52, 0x71,
0x55, 0xca, 0xa0, 0x37, 0x25, 0xb3, 0x01, 0xb3, 0x5f, 0xf4, 0x02, 0x20, 0x16, 0xc8, 0x15, 0x5e,
0xa7, 0x5b, 0x0c, 0xfa, 0x53, 0x32, 0xeb, 0x33, 0x07, 0xa1, 0x53, 0x18, 0x17, 0x02, 0x0b, 0x2e,
0x0c, 0xe1, 0x81, 0x26, 0xb8, 0x50, 0xcd, 0x48, 0x70, 0xc3, 0xab, 0x25, 0x8a, 0x34, 0x4f, 0x82,
0x81, 0x61, 0x38, 0x50, 0xf8, 0x09, 0x8e, 0x9b, 0x9a, 0xe9, 0x25, 0x9c, 0xae, 0x78, 0xfc, 0xa5,
0x2c, 0xda, 0xe5, 0xb6, 0x41, 0xfa, 0x0c, 0x86, 0x02, 0x55, 0xdd, 0x60, 0xd0, 0x9b, 0xf6, 0x67,
0xe3, 0xe8, 0xd1, 0x5c, 0x5b, 0x32, 0x77, 0x7b, 0x67, 0x0d, 0x27, 0xfc, 0x43, 0xc0, 0x6f, 0x4e,
0x16, 0xda, 0x2e, 0x1a, 0xc1, 0xd0, 0x16, 0xa9, 0x5f, 0x18, 0x47, 0x67, 0xf6, 0x86, 0xa5, 0x41,
0x1b, 0xfa, 0x9b, 0x23, 0xd6, 0x10, 0xb5, 0x06, 0xc5, 0x3a, 0x17, 0x5b, 0x6d, 0x92, 0xa3, 0x31,
0x68, 0x4b, 0x63, 0x20, 0xfa, 0x1c, 0x3c, 0x53, 0xba, 0xf6, 0x6e, 0x1c, 0x3d, 0xb6, 0x92, 0x2b,
0x0d, 0x3a, 0x0a, 0x4b, 0xab, 0x05, 0x31, 0xcf, 0x62, 0xdc, 0x68, 0x2f, 0xef, 0x04, 0xaf, 0x34,
0xe8, 0x0a, 0x0c, 0x8d, 0xfa, 0xd0, 0x53, 0x95, 0xb6, 0x75, 0xc0, 0x7a, 0xaa, 0xba, 0x1a, 0xc2,
0xe0, 0x86, 0x6f, 0x4a, 0x0c, 0xbf, 0x11, 0xf0, 0xdb, 0xcf, 0xdc, 0xd3, 0xdd, 0x7f, 0x77, 0xa6,
0xd7, 0xb9, 0x33, 0x3b, 0x93, 0xed, 0x77, 0x4d, 0x76, 0xb2, 0xe3, 0xe7, 0x61, 0x4b, 0x08, 0xbf,
0x13, 0x98, 0xec, 0xb8, 0x7f, 0xe0, 0x26, 0x2f, 0xc1, 0xe3, 0x52, 0xa2, 0x92, 0x41, 0x5f, 0x6f,
0xda, 0x89, 0x9d, 0xc7, 0xa2, 0x06, 0x99, 0x3d, 0x0b, 0x3f, 0x82, 0xdf, 0x1e, 0xd0, 0x81, 0xfb,
0xfc, 0x41, 0x60, 0xc2, 0xf0, 0x6b, 0x73, 0xfb, 0xdb, 0x6c, 0x9d, 0x1f, 0xb8, 0xcf, 0x27, 0x30,
0xd2, 0xbd, 0xbc, 0xbe, 0xc5, 0x58, 0x8f, 0x72, 0xc4, 0xee, 0x80, 0x7a, 0xd4, 0xfa, 0xe3, 0x7d,
0xb5, 0x5d, 0xe5, 0x66, 0x35, 0x47, 0xcc, 0x85, 0xc2, 0x5f, 0x04, 0x4e, 0x9b, 0xf2, 0xde, 0x95,
0x28, 0xaa, 0xff, 0xbd, 0x6c, 0xf7, 0x88, 0xa2, 0x0b, 0x00, 0x81, 0x5b, 0x9e, 0x66, 0x9a, 0x60,
0x92, 0xc8, 0x41, 0x9c, 0x10, 0xf4, 0xdc, 0x10, 0x8c, 0x7e, 0x13, 0x38, 0x6e, 0x22, 0x98, 0xbe,
0x84, 0xa1, 0xdd, 0x69, 0xba, 0x27, 0x33, 0xce, 0x27, 0x16, 0xff, 0x90, 0xc9, 0xf4, 0x73, 0x76,
0x7d, 0x1b, 0x1e, 0x69, 0x95, 0x8d, 0x84, 0x3d, 0xa9, 0xd1, 0xa5, 0x8a, 0xc0, 0x33, 0xbf, 0x60,
0xda, 0x9d, 0x1b, 0x7b, 0x34, 0x66, 0x15, 0x69, 0x77, 0x74, 0x74, 0x68, 0x56, 0x9e, 0xfe, 0xf7,
0x78, 0xf1, 0x37, 0x00, 0x00, 0xff, 0xff, 0x32, 0x13, 0x1c, 0xa2, 0x69, 0x06, 0x00, 0x00,
}
......@@ -15,7 +15,8 @@ func init() {
// init executor type
types.RegistorExecutor(RetrieveX, NewType())
types.RegisterDappFork(RetrieveX, "Enable", 0)
types.RegisterDappFork(RetrieveX, "ForkRetrive", 180000)
types.RegisterDappFork(RetrieveX, ForkRetriveX, 180000)
types.RegisterDappFork(RetrieveX, ForkRetriveAssetX, 3150000)
}
// RetrieveType def
......
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