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