Commit 8d517298 authored by harrylee's avatar harrylee

add broker dapp

parent 614c36d2
all:
bash build.sh $(OUT) $(FLAG)
#!/bin/bash
# 官方ci集成脚本
strpwd=$(pwd)
strcmd=${strpwd##*dapp/}
strapp=${strcmd%/cmd*}
OUT_DIR="${1}/$strapp"
#FLAG=$2
mkdir -p "${OUT_DIR}"
cp ./build/* "${OUT_DIR}"
/*Package commands implement dapp client commands*/
package commands
import (
"github.com/spf13/cobra"
)
/*
* 实现合约对应客户端
*/
// Cmd broker client command
func Cmd() *cobra.Command {
cmd := &cobra.Command{
Use: "broker",
Short: "broker command",
Args: cobra.MinimumNArgs(1),
}
cmd.AddCommand(
//add sub command
)
return cmd
}
package executor
import (
log "github.com/33cn/chain33/common/log/log15"
drivers "github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types"
brokertypes "github.com/33cn/plugin/plugin/dapp/broker/types"
)
/*
* 执行器相关定义
* 重载基类相关接口
*/
var (
//日志
elog = log.New("module", "broker.executor")
)
var driverName = brokertypes.BrokerX
// Init register dapp
func Init(name string, cfg *types.Chain33Config, sub []byte) {
drivers.Register(cfg, GetName(), newBroker, cfg.GetDappFork(driverName, "Enable"))
InitExecType()
}
// InitExecType Init Exec Type
func InitExecType() {
ety := types.LoadExecutorType(driverName)
ety.InitFuncList(types.ListMethod(&broker{}))
}
type broker struct {
drivers.DriverBase
}
func newBroker() drivers.Driver {
t := &broker{}
t.SetChild(t)
t.SetExecutorType(types.LoadExecutorType(driverName))
return t
}
// GetName get driver name
func GetName() string {
return newBroker().GetName()
}
func (b *broker) GetDriverName() string {
return driverName
}
// CheckTx 实现自定义检验交易接口,供框架调用
func (b *broker) CheckTx(tx *types.Transaction, index int) error {
// implement code
return nil
}
package executor
import (
"fmt"
"github.com/33cn/chain33/client"
dbm "github.com/33cn/chain33/common/db"
tab "github.com/33cn/chain33/common/db/table"
"github.com/33cn/chain33/types"
brokertypes "github.com/33cn/plugin/plugin/dapp/broker/types"
storagetypes "github.com/33cn/plugin/plugin/dapp/storage/types"
)
//BrokerDB ...
type BrokerDB struct {
api client.QueueProtocolAPI
db dbm.KV
localdb dbm.KV
txhash []byte
fromaddr string
blocktime int64
height int64
index int
}
func newBrokerDB(b *broker, tx *types.Transaction, index int) *BrokerDB {
hash := tx.Hash()
fromaddr := tx.From()
return &BrokerDB{b.GetAPI(), b.GetStateDB(), b.GetLocalDB(), hash, fromaddr,
b.GetBlockTime(), b.GetHeight(), index}
}
////GetKVSet ...
//func (b *BrokerDB) GetKVSet() (kvset []*types.KeyValue) {
// kvset = append(kvset, &types.KeyValue{Key: Key(common.ToHex(s.txhash)), Value: types.Encode(payload)})
// return kvset
//}
func(b *BrokerDB)register(payload *brokertypes.Register )(*types.Receipt, error){
return nil,nil
}
func(b *BrokerDB)audit(payload *brokertypes.Audit )(*types.Receipt, error){
return nil,nil
}
func(b *BrokerDB)updateEventStatus(payload *brokertypes.UpdateEventStatus)(*types.Receipt, error){
receipt := &types.Receipt{Ty: types.ExecOk}
log :=&brokertypes.ReceiptBrokerLog{Value:&brokertypes.ReceiptBrokerLog_UpdateEventStatus{payload},Ty:brokertypes.TyEmitInterchainEventAction}
receiptlog := &types.ReceiptLog{Ty:brokertypes.TyUpdateEventStatusLog,Log:types.Encode(log)}
receipt.Logs=append(receipt.Logs,receiptlog)
return receipt,nil
}
func(b *BrokerDB)emitInterchainEvent(payload *brokertypes.InterchainEvent )(*types.Receipt, error){
receipt := &types.Receipt{Ty: types.ExecOk}
//发布跨链事件 分为1.信息跨链 2.代币跨链,代币跨链需要在这步将所需金额冻结在broker下面
if payload.ReqType == brokertypes.Req_Type_Storage {
//校验存在交易是否存在
params :=&storagetypes.QueryStorage{TxHash:payload.Args[0]}
_,err:=b.api.Query(storagetypes.StorageX,payload.GetFunc(),params)
if err != nil {
return nil,brokertypes.ErrBrokerStorageTx
}
log :=&brokertypes.ReceiptBrokerLog{Value:&brokertypes.ReceiptBrokerLog_EmitInterchainEvent{payload},Ty:brokertypes.TyEmitInterchainEventAction}
receiptlog := &types.ReceiptLog{Ty:brokertypes.TyEmitInterchainEventLog,Log:types.Encode(log)}
receipt.Logs=append(receipt.Logs,receiptlog)
}
if payload.ReqType == brokertypes.Req_Type_Coins {
//TODO 跨链转账
}
return receipt,nil
}
//根据状态遍历时间列表(可通过定时轮循这个接口,获取跨链时间)
func findInterChainEventListByStatus(localdb dbm.KV,status, direction int32, primaryKey string) (*brokertypes.InterchainEventList, error) {
table := NewInterchainEventTable(localdb)
prefix := []byte(fmt.Sprintf("%d",status))
var rows []*tab.Row
var err error
if primaryKey == "" { //第一次查询,默认展示最新得成交记录
rows, err = table.ListIndex("status", prefix, nil, brokertypes.PageSize, direction)
} else {
rows, err = table.ListIndex("status", prefix, []byte(primaryKey), brokertypes.PageSize, direction)
}
if err != nil {
elog.Error("findInterChainEventListByStatus.", "err", err.Error())
return nil, err
}
var eventList brokertypes.InterchainEventList
for _, row := range rows {
event := row.Data.(*brokertypes.InterchainEvent)
eventList.List = append(eventList.List, event)
}
//设置主键索引
if len(rows) == int(brokertypes.PageSize) {
eventList.PrimaryKey = string(rows[len(rows)-1].Primary)
}
return &eventList, nil
}
//根据index查询event
func findInterChainEventByIndex(localdb dbm.KV,index uint64)(*brokertypes.InterchainEvent,error){
table :=NewInterchainEventTable(localdb)
primaryKey := []byte(fmt.Sprintf("%018d", index))
row,err:=table.GetData(primaryKey)
if err !=nil {
return nil,err
}
return row.Data.(*brokertypes.InterchainEvent),nil
}
\ No newline at end of file
package executor
import (
"github.com/33cn/chain33/types"
brokertypes "github.com/33cn/plugin/plugin/dapp/broker/types"
)
/*
* 实现交易的链上执行接口
* 关键数据上链(statedb)并生成交易回执(log)
*/
func (b *broker) Exec_Register(payload *brokertypes.Register, tx *types.Transaction, index int) (*types.Receipt, error) {
db := newBrokerDB(b,tx,index)
return db.register(payload)
}
func (b *broker) Exec_Audit(payload *brokertypes.Audit, tx *types.Transaction, index int) (*types.Receipt, error) {
db := newBrokerDB(b,tx,index)
//implement code 1.授权执行器 2.跨链账户是否需要授权
return db.audit(payload)
}
func (b *broker) Exec_UpdateEventStatus(payload *brokertypes.UpdateEventStatus, tx *types.Transaction, index int) (*types.Receipt, error) {
db := newBrokerDB(b,tx,index)
return db.updateEventStatus(payload)
}
func (b *broker) Exec_EmitInterchainEvent(payload *brokertypes.InterchainEvent, tx *types.Transaction, index int) (*types.Receipt, error) {
db := newBrokerDB(b,tx,index)
return db.emitInterchainEvent(payload)
}
package executor
import (
"github.com/33cn/chain33/types"
)
/*
* 实现区块回退时本地执行的数据清除
*/
// ExecDelLocal localdb kv数据自动回滚接口
func (b *broker) ExecDelLocal(tx *types.Transaction, receipt *types.ReceiptData, index int) (*types.LocalDBSet, error) {
kvs, err := b.DelRollbackKV(tx, tx.Execer)
if err != nil {
return nil, err
}
dbSet := &types.LocalDBSet{}
dbSet.KV = append(dbSet.KV, kvs...)
return dbSet, nil
}
package executor
import (
"fmt"
"github.com/33cn/chain33/types"
brokertypes "github.com/33cn/plugin/plugin/dapp/broker/types"
)
/*
* 实现交易相关数据本地执行,数据不上链
* 非关键数据,本地存储(localDB), 用于辅助查询,效率高
*/
func (b *broker) ExecLocal_Register(payload *brokertypes.Register, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{}
//implement code, add customize kv to dbSet...
//auto gen for localdb auto rollback
return b.addAutoRollBack(tx, dbSet.KV), nil
}
func (b *broker) ExecLocal_Audit(payload *brokertypes.Audit, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{}
//implement code, add customize kv to dbSet...
//auto gen for localdb auto rollback
return b.addAutoRollBack(tx, dbSet.KV), nil
}
func (b *broker) ExecLocal_UpdateEventStatus(payload *brokertypes.UpdateEventStatus, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{}
table :=NewInterchainEventTable(b.GetLocalDB())
primaryKey := []byte(fmt.Sprintf("%018d", payload.Index))
row,err:=table.GetData(primaryKey)
if err !=nil {
return nil,err
}
event:=row.Data.(*brokertypes.InterchainEvent)
//更新状态
event.Status=payload.Status
table.Replace(event)
kvs,err:=table.Save()
if err !=nil {
return nil,err
}
dbSet.KV=append(dbSet.KV,kvs...)
return b.addAutoRollBack(tx, dbSet.KV), nil
}
func (b *broker) ExecLocal_EmitInterchainEvent(payload *brokertypes.InterchainEvent, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{}
table :=NewInterchainEventTable(b.GetLocalDB())
payload.Index=b.GetIndex(index)
table.Add(payload)
kvs,err:=table.Save()
if err !=nil {
return nil,err
}
dbSet.KV=append(dbSet.KV,kvs...)
return b.addAutoRollBack(tx, dbSet.KV), nil
}
//GetIndex get index
func (b *broker) GetIndex(index int) uint64 {
return uint64(int(b.GetHeight())*types.MaxTxsPerBlock + index)
}
//当区块回滚时,框架支持自动回滚localdb kv,需要对exec-local返回的kv进行封装
func (b *broker) addAutoRollBack(tx *types.Transaction, kv []*types.KeyValue) *types.LocalDBSet {
dbSet := &types.LocalDBSet{}
dbSet.KV = b.AddRollbackKV(tx, tx.Execer, kv)
return dbSet
}
package executor
/*
* 用户合约存取kv数据时,key值前缀需要满足一定规范
* 即key = keyPrefix + userKey
* 需要字段前缀查询时,使用’-‘作为分割符号
*/
var (
//KeyPrefixStateDB state db key必须前缀
KeyPrefixStateDB = "mavl-broker-"
//KeyPrefixLocalDB local db的key必须前缀
KeyPrefixLocalDB = "LODB-broker-"
)
package executor
import (
"fmt"
"github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/common/db/table"
"github.com/33cn/chain33/types"
ety "github.com/33cn/plugin/plugin/dapp/broker/types"
)
//重新设计表,list查询全部在跨链事件localdb查询中
var opt_broker_event = &table.Option{
Prefix: KeyPrefixLocalDB,
Name: "broker",
Primary: "index",
Index: []string{"dstChainID", "status","reqType"},
}
//InterchainEventRow table meta 结构
type InterchainEventRow struct {
*ety.InterchainEvent
}
//NewInterchainEventRow ...
func NewInterchainEventRow() *InterchainEventRow {
return &InterchainEventRow{&ety.InterchainEvent{}}
}
//CreateRow ...
func (m *InterchainEventRow) CreateRow() *table.Row {
return &table.Row{Data: &ety.InterchainEvent{}}
}
//SetPayload 设置数据
func (m *InterchainEventRow) SetPayload(data types.Message) error {
if txdata, ok := data.(*ety.InterchainEvent); ok {
m.InterchainEvent = txdata
return nil
}
return ety.ErrData
}
//Get 按照indexName 查询 indexValue
func (m *InterchainEventRow) Get(key string) ([]byte, error) {
if key == "index" {
return []byte(fmt.Sprintf("%018d", m.Index)), nil
} else if key == "dstChainID" {
return []byte(fmt.Sprintf("%s", m.GetDstChainID())), nil
} else if key == "status" {
return []byte(fmt.Sprintf("%d", m.GetStatus())), nil
}else if key == "reqType" {
return []byte(fmt.Sprintf("%d", m.GetReqType())), nil
}
return nil, types.ErrNotFound
}
//NewInterchainEventTable
func NewInterchainEventTable(kvdb db.KV) *table.Table {
rowmeta := NewInterchainEventRow()
table, err := table.NewTable(rowmeta, kvdb, opt_broker_event)
if err != nil {
panic(err)
}
return table
}
\ No newline at end of file
package types
import (
"github.com/33cn/chain33/pluginmgr"
"github.com/33cn/plugin/plugin/dapp/broker/commands"
"github.com/33cn/plugin/plugin/dapp/broker/executor"
"github.com/33cn/plugin/plugin/dapp/broker/rpc"
brokertypes "github.com/33cn/plugin/plugin/dapp/broker/types"
)
/*
* 初始化dapp相关的组件
*/
func init() {
pluginmgr.Register(&pluginmgr.PluginBase{
Name: brokertypes.BrokerX,
ExecName: executor.GetName(),
Exec: executor.Init,
Cmd: commands.Cmd,
RPC: rpc.Init,
})
}
all:
bash ./create_protobuf.sh
syntax = "proto3";
package types;
option go_package = "../types";
message BrokerAction {
oneof value {
Register register = 1;
Audit audit = 2;
InterchainEvent emitInterchainEvent = 3;
UpdateEventStatus updateEventStatus =4;
}
int32 ty = 5;
}
// 业务合约注册模型: 0表示正在审核,1表示审核通过,2表示审核失败
message Register {
//业务合约名称
string exectorName = 1;
}
//审核
message Audit {
//业务合约名称
string exectorName = 1;
//状态码 0表示正在审核,1表示审核通过,2表示审核失败
string status = 2;
}
// 轮循事件
message PollingEvent {
string outMeta = 1;
}
// 更新状态
message UpdateEventStatus {
//源链ID
string index = 1;
//状态 0表示开始处理 1表示跨链成功 2表示跨链失败
int32 status = 2;
}
////发布跨链事件
//message EmitInterchainEvent{
// //目的链ID,固定格式0x000001
// string dstChainID = 1;
// //源链ID,固定格式0x000002
// string srcChainID = 2;
// //跨链交易类型 0表示storage,1表示coins,2表示token......
// uint64 reqType =3;
// //调用方法
// string func = 4;
// //参数列表
// repeated string args = 6;
//}
// 跨链事件
message InterchainEvent {
//索引值,这个有系统自动生成
uint64 index = 1;
//目的链ID,固定格式0x000001
string dstChainID = 2;
//源链ID,固定格式0x000002
string srcChainID = 3;
//跨链交易类型 0表示storage,1表示coins,2表示token......
uint64 reqType =4;
//调用方法
string func = 5;
//参数列表
repeated string args = 6;
//状态 0表示开始处理 1表示跨链成功 2表示跨链失败
int32 status = 7;
}
//ReceiptBrokerLog
message ReceiptBrokerLog{
oneof value {
Register register = 1;
Audit audit = 2;
InterchainEvent emitInterchainEvent = 3;
UpdateEventStatus updateEventStatus =4;
}
int32 ty = 5;
}
service broker {}
//根据状态查看跨链事件
message QueryInterchainEventList {
//事件状态必填(默认是0,只查询待处理状态的事件)
int32 status = 1;
// 主键索引
string primaryKey = 2;
//单页返回多少条记录,默认返回10条,为了系统安全最多单次只能返回20条
int32 count = 3;
// 0降序,1升序,默认降序
int32 direction = 4;
}
//跨链事件列表
message InterchainEventList {
repeated InterchainEvent list = 1;
string primaryKey = 2;
}
#!/bin/bash
# proto生成命令,将pb.go文件生成到types/目录下, chain33_path支持引用chain33框架的proto文件
chain33_path=$(go list -f '{{.Dir}}' "github.com/33cn/chain33")
protoc --go_out=plugins=grpc:../types ./*.proto --proto_path=. --proto_path="${chain33_path}/types/proto/"
package rpc
/*
* 实现json rpc和grpc service接口
* json rpc用Jrpc结构作为接收实例
* grpc使用channelClient结构作为接收实例
*/
package rpc
import (
rpctypes "github.com/33cn/chain33/rpc/types"
brokertypes "github.com/33cn/plugin/plugin/dapp/broker/types"
)
/*
* rpc相关结构定义和初始化
*/
// 实现grpc的service接口
type channelClient struct {
rpctypes.ChannelClient
}
// Jrpc 实现json rpc调用实例
type Jrpc struct {
cli *channelClient
}
// Grpc grpc
type Grpc struct {
*channelClient
}
// Init init rpc
func Init(name string, s rpctypes.RPCServer) {
cli := &channelClient{}
grpc := &Grpc{channelClient: cli}
cli.Init(name, s, &Jrpc{cli: cli}, grpc)
//存在grpc service时注册grpc server,需要生成对应的pb.go文件
brokertypes.RegisterBrokerServer(s.GRPC(), grpc)
}
package types
import (
log "github.com/33cn/chain33/common/log/log15"
"github.com/33cn/chain33/types"
)
/*
* 交易相关类型定义
* 交易action通常有对应的log结构,用于交易回执日志记录
* 每一种action和log需要用id数值和name名称加以区分
*/
// action类型id和name,这些常量可以自定义修改
const (
TyUnknowAction = iota + 100
TyRegisterAction
TyAuditAction
TyUpdateEventStatusAction
TyEmitInterchainEventAction
NameRegisterAction = "Register"
NameAuditAction = "Audit"
NameUpdateEventStatusAction = "UpdateEventStatus"
NameEmitInterchainEventAction = "EmitInterchainEvent"
)
// 请求类型
const (
Req_Type_Storage = iota
Req_Type_Coins
Req_Type_Token
)
// 跨链事件状态
const (
Pending = iota
Success
Fail
)
//查询方向
const (
ListDESC = int32(0)
ListASC = int32(1)
ListSeek = int32(2)
)
const (
//Count 单次list还回条数
PageSize = int32(10)
MaxPageSize = 100
)
// log类型id值
const (
TyUnknownLog = iota + 100
TyRegisterLog
TyAuditLog
TyUpdateEventStatusLog
TyEmitInterchainEventLog
)
var (
//BrokerX 执行器名称定义
BrokerX = "broker"
//定义actionMap
actionMap = map[string]int32{
NameRegisterAction: TyRegisterAction,
NameAuditAction: TyAuditAction,
NameUpdateEventStatusAction: TyUpdateEventStatusAction,
NameEmitInterchainEventAction: TyEmitInterchainEventAction,
}
//定义log的id和具体log类型及名称,填入具体自定义log类型
logMap = map[int64]*types.LogInfo{
//LogID: {Ty: reflect.TypeOf(LogStruct), Name: LogName},
}
tlog = log.New("module", "broker.types")
)
// init defines a register function
func init() {
types.AllowUserExec = append(types.AllowUserExec, []byte(BrokerX))
//注册合约启用高度
types.RegFork(BrokerX, InitFork)
types.RegExec(BrokerX, InitExecutor)
}
// InitFork defines register fork
func InitFork(cfg *types.Chain33Config) {
cfg.RegisterDappFork(BrokerX, "Enable", 0)
}
// InitExecutor defines register executor
func InitExecutor(cfg *types.Chain33Config) {
types.RegistorExecutor(BrokerX, NewType(cfg))
}
type brokerType struct {
types.ExecTypeBase
}
func NewType(cfg *types.Chain33Config) *brokerType {
c := &brokerType{}
c.SetChild(c)
c.SetConfig(cfg)
return c
}
// GetPayload 获取合约action结构
func (b *brokerType) GetPayload() types.Message {
return &BrokerAction{}
}
// GeTypeMap 获取合约action的id和name信息
func (b *brokerType) GetTypeMap() map[string]int32 {
return actionMap
}
// GetLogMap 获取合约log相关信息
func (b *brokerType) GetLogMap() map[int64]*types.LogInfo {
return logMap
}
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: broker.proto
package types
import (
context "context"
fmt "fmt"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type BrokerAction struct {
// Types that are valid to be assigned to Value:
// *BrokerAction_Register
// *BrokerAction_Audit
// *BrokerAction_EmitInterchainEvent
// *BrokerAction_UpdateEventStatus
Value isBrokerAction_Value `protobuf_oneof:"value"`
Ty int32 `protobuf:"varint,5,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BrokerAction) Reset() { *m = BrokerAction{} }
func (m *BrokerAction) String() string { return proto.CompactTextString(m) }
func (*BrokerAction) ProtoMessage() {}
func (*BrokerAction) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{0}
}
func (m *BrokerAction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BrokerAction.Unmarshal(m, b)
}
func (m *BrokerAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BrokerAction.Marshal(b, m, deterministic)
}
func (m *BrokerAction) XXX_Merge(src proto.Message) {
xxx_messageInfo_BrokerAction.Merge(m, src)
}
func (m *BrokerAction) XXX_Size() int {
return xxx_messageInfo_BrokerAction.Size(m)
}
func (m *BrokerAction) XXX_DiscardUnknown() {
xxx_messageInfo_BrokerAction.DiscardUnknown(m)
}
var xxx_messageInfo_BrokerAction proto.InternalMessageInfo
type isBrokerAction_Value interface {
isBrokerAction_Value()
}
type BrokerAction_Register struct {
Register *Register `protobuf:"bytes,1,opt,name=register,proto3,oneof"`
}
type BrokerAction_Audit struct {
Audit *Audit `protobuf:"bytes,2,opt,name=audit,proto3,oneof"`
}
type BrokerAction_EmitInterchainEvent struct {
EmitInterchainEvent *InterchainEvent `protobuf:"bytes,3,opt,name=emitInterchainEvent,proto3,oneof"`
}
type BrokerAction_UpdateEventStatus struct {
UpdateEventStatus *UpdateEventStatus `protobuf:"bytes,4,opt,name=updateEventStatus,proto3,oneof"`
}
func (*BrokerAction_Register) isBrokerAction_Value() {}
func (*BrokerAction_Audit) isBrokerAction_Value() {}
func (*BrokerAction_EmitInterchainEvent) isBrokerAction_Value() {}
func (*BrokerAction_UpdateEventStatus) isBrokerAction_Value() {}
func (m *BrokerAction) GetValue() isBrokerAction_Value {
if m != nil {
return m.Value
}
return nil
}
func (m *BrokerAction) GetRegister() *Register {
if x, ok := m.GetValue().(*BrokerAction_Register); ok {
return x.Register
}
return nil
}
func (m *BrokerAction) GetAudit() *Audit {
if x, ok := m.GetValue().(*BrokerAction_Audit); ok {
return x.Audit
}
return nil
}
func (m *BrokerAction) GetEmitInterchainEvent() *InterchainEvent {
if x, ok := m.GetValue().(*BrokerAction_EmitInterchainEvent); ok {
return x.EmitInterchainEvent
}
return nil
}
func (m *BrokerAction) GetUpdateEventStatus() *UpdateEventStatus {
if x, ok := m.GetValue().(*BrokerAction_UpdateEventStatus); ok {
return x.UpdateEventStatus
}
return nil
}
func (m *BrokerAction) GetTy() int32 {
if m != nil {
return m.Ty
}
return 0
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*BrokerAction) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*BrokerAction_Register)(nil),
(*BrokerAction_Audit)(nil),
(*BrokerAction_EmitInterchainEvent)(nil),
(*BrokerAction_UpdateEventStatus)(nil),
}
}
// 业务合约注册模型: 0表示正在审核,1表示审核通过,2表示审核失败
type Register struct {
//业务合约名称
ExectorName string `protobuf:"bytes,1,opt,name=exectorName,proto3" json:"exectorName,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Register) Reset() { *m = Register{} }
func (m *Register) String() string { return proto.CompactTextString(m) }
func (*Register) ProtoMessage() {}
func (*Register) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{1}
}
func (m *Register) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Register.Unmarshal(m, b)
}
func (m *Register) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Register.Marshal(b, m, deterministic)
}
func (m *Register) XXX_Merge(src proto.Message) {
xxx_messageInfo_Register.Merge(m, src)
}
func (m *Register) XXX_Size() int {
return xxx_messageInfo_Register.Size(m)
}
func (m *Register) XXX_DiscardUnknown() {
xxx_messageInfo_Register.DiscardUnknown(m)
}
var xxx_messageInfo_Register proto.InternalMessageInfo
func (m *Register) GetExectorName() string {
if m != nil {
return m.ExectorName
}
return ""
}
//审核
type Audit struct {
//业务合约名称
ExectorName string `protobuf:"bytes,1,opt,name=exectorName,proto3" json:"exectorName,omitempty"`
//状态码 0表示正在审核,1表示审核通过,2表示审核失败
Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Audit) Reset() { *m = Audit{} }
func (m *Audit) String() string { return proto.CompactTextString(m) }
func (*Audit) ProtoMessage() {}
func (*Audit) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{2}
}
func (m *Audit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Audit.Unmarshal(m, b)
}
func (m *Audit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Audit.Marshal(b, m, deterministic)
}
func (m *Audit) XXX_Merge(src proto.Message) {
xxx_messageInfo_Audit.Merge(m, src)
}
func (m *Audit) XXX_Size() int {
return xxx_messageInfo_Audit.Size(m)
}
func (m *Audit) XXX_DiscardUnknown() {
xxx_messageInfo_Audit.DiscardUnknown(m)
}
var xxx_messageInfo_Audit proto.InternalMessageInfo
func (m *Audit) GetExectorName() string {
if m != nil {
return m.ExectorName
}
return ""
}
func (m *Audit) GetStatus() string {
if m != nil {
return m.Status
}
return ""
}
// 轮循事件
type PollingEvent struct {
OutMeta string `protobuf:"bytes,1,opt,name=outMeta,proto3" json:"outMeta,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *PollingEvent) Reset() { *m = PollingEvent{} }
func (m *PollingEvent) String() string { return proto.CompactTextString(m) }
func (*PollingEvent) ProtoMessage() {}
func (*PollingEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{3}
}
func (m *PollingEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PollingEvent.Unmarshal(m, b)
}
func (m *PollingEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PollingEvent.Marshal(b, m, deterministic)
}
func (m *PollingEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_PollingEvent.Merge(m, src)
}
func (m *PollingEvent) XXX_Size() int {
return xxx_messageInfo_PollingEvent.Size(m)
}
func (m *PollingEvent) XXX_DiscardUnknown() {
xxx_messageInfo_PollingEvent.DiscardUnknown(m)
}
var xxx_messageInfo_PollingEvent proto.InternalMessageInfo
func (m *PollingEvent) GetOutMeta() string {
if m != nil {
return m.OutMeta
}
return ""
}
// 更新状态
type UpdateEventStatus struct {
//源链ID
Index string `protobuf:"bytes,1,opt,name=index,proto3" json:"index,omitempty"`
//状态 0表示开始处理 1表示跨链成功 2表示跨链失败
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UpdateEventStatus) Reset() { *m = UpdateEventStatus{} }
func (m *UpdateEventStatus) String() string { return proto.CompactTextString(m) }
func (*UpdateEventStatus) ProtoMessage() {}
func (*UpdateEventStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{4}
}
func (m *UpdateEventStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateEventStatus.Unmarshal(m, b)
}
func (m *UpdateEventStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UpdateEventStatus.Marshal(b, m, deterministic)
}
func (m *UpdateEventStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_UpdateEventStatus.Merge(m, src)
}
func (m *UpdateEventStatus) XXX_Size() int {
return xxx_messageInfo_UpdateEventStatus.Size(m)
}
func (m *UpdateEventStatus) XXX_DiscardUnknown() {
xxx_messageInfo_UpdateEventStatus.DiscardUnknown(m)
}
var xxx_messageInfo_UpdateEventStatus proto.InternalMessageInfo
func (m *UpdateEventStatus) GetIndex() string {
if m != nil {
return m.Index
}
return ""
}
func (m *UpdateEventStatus) GetStatus() int32 {
if m != nil {
return m.Status
}
return 0
}
// 跨链事件
type InterchainEvent struct {
//索引值,这个有系统自动生成
Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
//目的链ID,固定格式0x000001
DstChainID string `protobuf:"bytes,2,opt,name=dstChainID,proto3" json:"dstChainID,omitempty"`
//源链ID,固定格式0x000002
SrcChainID string `protobuf:"bytes,3,opt,name=srcChainID,proto3" json:"srcChainID,omitempty"`
//跨链交易类型 0表示storage,1表示coins,2表示token......
ReqType uint64 `protobuf:"varint,4,opt,name=reqType,proto3" json:"reqType,omitempty"`
//调用方法
Func string `protobuf:"bytes,5,opt,name=func,proto3" json:"func,omitempty"`
//参数列表
Args []string `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"`
//状态 0表示开始处理 1表示跨链成功 2表示跨链失败
Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *InterchainEvent) Reset() { *m = InterchainEvent{} }
func (m *InterchainEvent) String() string { return proto.CompactTextString(m) }
func (*InterchainEvent) ProtoMessage() {}
func (*InterchainEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{5}
}
func (m *InterchainEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InterchainEvent.Unmarshal(m, b)
}
func (m *InterchainEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_InterchainEvent.Marshal(b, m, deterministic)
}
func (m *InterchainEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_InterchainEvent.Merge(m, src)
}
func (m *InterchainEvent) XXX_Size() int {
return xxx_messageInfo_InterchainEvent.Size(m)
}
func (m *InterchainEvent) XXX_DiscardUnknown() {
xxx_messageInfo_InterchainEvent.DiscardUnknown(m)
}
var xxx_messageInfo_InterchainEvent proto.InternalMessageInfo
func (m *InterchainEvent) GetIndex() uint64 {
if m != nil {
return m.Index
}
return 0
}
func (m *InterchainEvent) GetDstChainID() string {
if m != nil {
return m.DstChainID
}
return ""
}
func (m *InterchainEvent) GetSrcChainID() string {
if m != nil {
return m.SrcChainID
}
return ""
}
func (m *InterchainEvent) GetReqType() uint64 {
if m != nil {
return m.ReqType
}
return 0
}
func (m *InterchainEvent) GetFunc() string {
if m != nil {
return m.Func
}
return ""
}
func (m *InterchainEvent) GetArgs() []string {
if m != nil {
return m.Args
}
return nil
}
func (m *InterchainEvent) GetStatus() int32 {
if m != nil {
return m.Status
}
return 0
}
//ReceiptBrokerLog
type ReceiptBrokerLog struct {
// Types that are valid to be assigned to Value:
// *ReceiptBrokerLog_Register
// *ReceiptBrokerLog_Audit
// *ReceiptBrokerLog_EmitInterchainEvent
// *ReceiptBrokerLog_UpdateEventStatus
Value isReceiptBrokerLog_Value `protobuf_oneof:"value"`
Ty int32 `protobuf:"varint,5,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ReceiptBrokerLog) Reset() { *m = ReceiptBrokerLog{} }
func (m *ReceiptBrokerLog) String() string { return proto.CompactTextString(m) }
func (*ReceiptBrokerLog) ProtoMessage() {}
func (*ReceiptBrokerLog) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{6}
}
func (m *ReceiptBrokerLog) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiptBrokerLog.Unmarshal(m, b)
}
func (m *ReceiptBrokerLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReceiptBrokerLog.Marshal(b, m, deterministic)
}
func (m *ReceiptBrokerLog) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReceiptBrokerLog.Merge(m, src)
}
func (m *ReceiptBrokerLog) XXX_Size() int {
return xxx_messageInfo_ReceiptBrokerLog.Size(m)
}
func (m *ReceiptBrokerLog) XXX_DiscardUnknown() {
xxx_messageInfo_ReceiptBrokerLog.DiscardUnknown(m)
}
var xxx_messageInfo_ReceiptBrokerLog proto.InternalMessageInfo
type isReceiptBrokerLog_Value interface {
isReceiptBrokerLog_Value()
}
type ReceiptBrokerLog_Register struct {
Register *Register `protobuf:"bytes,1,opt,name=register,proto3,oneof"`
}
type ReceiptBrokerLog_Audit struct {
Audit *Audit `protobuf:"bytes,2,opt,name=audit,proto3,oneof"`
}
type ReceiptBrokerLog_EmitInterchainEvent struct {
EmitInterchainEvent *InterchainEvent `protobuf:"bytes,3,opt,name=emitInterchainEvent,proto3,oneof"`
}
type ReceiptBrokerLog_UpdateEventStatus struct {
UpdateEventStatus *UpdateEventStatus `protobuf:"bytes,4,opt,name=updateEventStatus,proto3,oneof"`
}
func (*ReceiptBrokerLog_Register) isReceiptBrokerLog_Value() {}
func (*ReceiptBrokerLog_Audit) isReceiptBrokerLog_Value() {}
func (*ReceiptBrokerLog_EmitInterchainEvent) isReceiptBrokerLog_Value() {}
func (*ReceiptBrokerLog_UpdateEventStatus) isReceiptBrokerLog_Value() {}
func (m *ReceiptBrokerLog) GetValue() isReceiptBrokerLog_Value {
if m != nil {
return m.Value
}
return nil
}
func (m *ReceiptBrokerLog) GetRegister() *Register {
if x, ok := m.GetValue().(*ReceiptBrokerLog_Register); ok {
return x.Register
}
return nil
}
func (m *ReceiptBrokerLog) GetAudit() *Audit {
if x, ok := m.GetValue().(*ReceiptBrokerLog_Audit); ok {
return x.Audit
}
return nil
}
func (m *ReceiptBrokerLog) GetEmitInterchainEvent() *InterchainEvent {
if x, ok := m.GetValue().(*ReceiptBrokerLog_EmitInterchainEvent); ok {
return x.EmitInterchainEvent
}
return nil
}
func (m *ReceiptBrokerLog) GetUpdateEventStatus() *UpdateEventStatus {
if x, ok := m.GetValue().(*ReceiptBrokerLog_UpdateEventStatus); ok {
return x.UpdateEventStatus
}
return nil
}
func (m *ReceiptBrokerLog) GetTy() int32 {
if m != nil {
return m.Ty
}
return 0
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*ReceiptBrokerLog) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*ReceiptBrokerLog_Register)(nil),
(*ReceiptBrokerLog_Audit)(nil),
(*ReceiptBrokerLog_EmitInterchainEvent)(nil),
(*ReceiptBrokerLog_UpdateEventStatus)(nil),
}
}
//根据状态查看跨链事件
type QueryInterchainEventList struct {
//事件状态必填(默认是0,只查询待处理状态的事件)
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
// 主键索引
PrimaryKey string `protobuf:"bytes,2,opt,name=primaryKey,proto3" json:"primaryKey,omitempty"`
//单页返回多少条记录,默认返回10条,为了系统安全最多单次只能返回20条
Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
// 0降序,1升序,默认降序
Direction int32 `protobuf:"varint,4,opt,name=direction,proto3" json:"direction,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *QueryInterchainEventList) Reset() { *m = QueryInterchainEventList{} }
func (m *QueryInterchainEventList) String() string { return proto.CompactTextString(m) }
func (*QueryInterchainEventList) ProtoMessage() {}
func (*QueryInterchainEventList) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{7}
}
func (m *QueryInterchainEventList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryInterchainEventList.Unmarshal(m, b)
}
func (m *QueryInterchainEventList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_QueryInterchainEventList.Marshal(b, m, deterministic)
}
func (m *QueryInterchainEventList) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryInterchainEventList.Merge(m, src)
}
func (m *QueryInterchainEventList) XXX_Size() int {
return xxx_messageInfo_QueryInterchainEventList.Size(m)
}
func (m *QueryInterchainEventList) XXX_DiscardUnknown() {
xxx_messageInfo_QueryInterchainEventList.DiscardUnknown(m)
}
var xxx_messageInfo_QueryInterchainEventList proto.InternalMessageInfo
func (m *QueryInterchainEventList) GetStatus() int32 {
if m != nil {
return m.Status
}
return 0
}
func (m *QueryInterchainEventList) GetPrimaryKey() string {
if m != nil {
return m.PrimaryKey
}
return ""
}
func (m *QueryInterchainEventList) GetCount() int32 {
if m != nil {
return m.Count
}
return 0
}
func (m *QueryInterchainEventList) GetDirection() int32 {
if m != nil {
return m.Direction
}
return 0
}
//跨链事件列表
type InterchainEventList struct {
List []*InterchainEvent `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
PrimaryKey string `protobuf:"bytes,2,opt,name=primaryKey,proto3" json:"primaryKey,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *InterchainEventList) Reset() { *m = InterchainEventList{} }
func (m *InterchainEventList) String() string { return proto.CompactTextString(m) }
func (*InterchainEventList) ProtoMessage() {}
func (*InterchainEventList) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{8}
}
func (m *InterchainEventList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InterchainEventList.Unmarshal(m, b)
}
func (m *InterchainEventList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_InterchainEventList.Marshal(b, m, deterministic)
}
func (m *InterchainEventList) XXX_Merge(src proto.Message) {
xxx_messageInfo_InterchainEventList.Merge(m, src)
}
func (m *InterchainEventList) XXX_Size() int {
return xxx_messageInfo_InterchainEventList.Size(m)
}
func (m *InterchainEventList) XXX_DiscardUnknown() {
xxx_messageInfo_InterchainEventList.DiscardUnknown(m)
}
var xxx_messageInfo_InterchainEventList proto.InternalMessageInfo
func (m *InterchainEventList) GetList() []*InterchainEvent {
if m != nil {
return m.List
}
return nil
}
func (m *InterchainEventList) GetPrimaryKey() string {
if m != nil {
return m.PrimaryKey
}
return ""
}
func init() {
proto.RegisterType((*BrokerAction)(nil), "types.BrokerAction")
proto.RegisterType((*Register)(nil), "types.Register")
proto.RegisterType((*Audit)(nil), "types.Audit")
proto.RegisterType((*PollingEvent)(nil), "types.PollingEvent")
proto.RegisterType((*UpdateEventStatus)(nil), "types.UpdateEventStatus")
proto.RegisterType((*InterchainEvent)(nil), "types.InterchainEvent")
proto.RegisterType((*ReceiptBrokerLog)(nil), "types.ReceiptBrokerLog")
proto.RegisterType((*QueryInterchainEventList)(nil), "types.QueryInterchainEventList")
proto.RegisterType((*InterchainEventList)(nil), "types.InterchainEventList")
}
func init() {
proto.RegisterFile("broker.proto", fileDescriptor_f209535e190f2bed)
}
var fileDescriptor_f209535e190f2bed = []byte{
// 491 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0x5d, 0x6e, 0xd3, 0x40,
0x10, 0x8e, 0x9d, 0x6c, 0x7e, 0xa6, 0x11, 0xa5, 0x5b, 0x54, 0xed, 0x03, 0x42, 0x96, 0xc5, 0x43,
0x84, 0xc0, 0x48, 0xe5, 0x04, 0x09, 0x20, 0xb9, 0x50, 0x10, 0x2c, 0xf0, 0xc2, 0xdb, 0xd6, 0x1e,
0xc2, 0x8a, 0xc4, 0x36, 0xeb, 0x71, 0x55, 0x5f, 0x80, 0x03, 0xf0, 0xc0, 0x7d, 0xb8, 0x19, 0xf2,
0xda, 0x6e, 0x5c, 0xb7, 0xa8, 0x17, 0xe8, 0xdb, 0xce, 0xf7, 0x7d, 0x33, 0x3b, 0xdf, 0xec, 0x6a,
0x60, 0x7e, 0x66, 0xd2, 0x1f, 0x68, 0x82, 0xcc, 0xa4, 0x94, 0x72, 0x46, 0x65, 0x86, 0xb9, 0xff,
0xdb, 0x85, 0xf9, 0xca, 0xe2, 0xcb, 0x88, 0x74, 0x9a, 0xf0, 0x67, 0x30, 0x35, 0xb8, 0xd6, 0x39,
0xa1, 0x11, 0x8e, 0xe7, 0x2c, 0xf6, 0x8e, 0xf7, 0x03, 0x2b, 0x0d, 0x64, 0x03, 0x87, 0x03, 0x79,
0x29, 0xe1, 0x8f, 0x81, 0xa9, 0x22, 0xd6, 0x24, 0x5c, 0xab, 0x9d, 0x37, 0xda, 0x65, 0x85, 0x85,
0x03, 0x59, 0x93, 0xfc, 0x0d, 0x1c, 0xe2, 0x56, 0xd3, 0x49, 0x42, 0x68, 0xa2, 0xef, 0x4a, 0x27,
0xaf, 0xcf, 0x31, 0x21, 0x31, 0xb4, 0x39, 0x47, 0x4d, 0x4e, 0x8f, 0x0d, 0x07, 0xf2, 0xa6, 0x24,
0x1e, 0xc2, 0x41, 0x91, 0xc5, 0x8a, 0xd0, 0x86, 0x9f, 0x48, 0x51, 0x91, 0x8b, 0x91, 0xad, 0x24,
0x9a, 0x4a, 0x5f, 0xfa, 0x7c, 0x38, 0x90, 0xd7, 0x93, 0xf8, 0x3d, 0x70, 0xa9, 0x14, 0xcc, 0x73,
0x16, 0x4c, 0xba, 0x54, 0xae, 0x26, 0xc0, 0xce, 0xd5, 0xa6, 0x40, 0xff, 0x29, 0x4c, 0x5b, 0xb3,
0xdc, 0x83, 0x3d, 0xbc, 0xc0, 0x88, 0x52, 0xf3, 0x5e, 0x6d, 0xd1, 0x8e, 0x64, 0x26, 0xbb, 0x90,
0xbf, 0x04, 0x66, 0xed, 0xde, 0x2e, 0xe5, 0x47, 0x30, 0xce, 0xeb, 0x86, 0x5d, 0x4b, 0x36, 0x91,
0xbf, 0x80, 0xf9, 0x87, 0x74, 0xb3, 0xd1, 0xc9, 0xba, 0xf6, 0x28, 0x60, 0x92, 0x16, 0xf4, 0x0e,
0x49, 0x35, 0x55, 0xda, 0xd0, 0x5f, 0xc2, 0xc1, 0x35, 0x77, 0xfc, 0x01, 0x30, 0x9d, 0xc4, 0x78,
0xd1, 0x88, 0xeb, 0xa0, 0x77, 0x19, 0xbb, 0xbc, 0xec, 0xaf, 0x03, 0xfb, 0xfd, 0xa1, 0x5e, 0xa9,
0x30, 0x6a, 0x2b, 0x3c, 0x02, 0x88, 0x73, 0x7a, 0x59, 0xc9, 0x4e, 0x5e, 0x35, 0x2d, 0x77, 0x90,
0x8a, 0xcf, 0x4d, 0xd4, 0xf2, 0xc3, 0x9a, 0xdf, 0x21, 0x95, 0x0d, 0x83, 0x3f, 0x3f, 0x97, 0x19,
0xda, 0x07, 0x1a, 0xc9, 0x36, 0xe4, 0x1c, 0x46, 0xdf, 0x8a, 0x24, 0xb2, 0xc3, 0x9f, 0x49, 0x7b,
0xae, 0x30, 0x65, 0xd6, 0xb9, 0x18, 0x7b, 0xc3, 0x0a, 0xab, 0xce, 0x1d, 0x0f, 0x93, 0x2b, 0x1e,
0xfe, 0xb8, 0x70, 0x5f, 0x62, 0x84, 0x3a, 0xa3, 0xfa, 0xf7, 0x9e, 0xa6, 0xeb, 0xbb, 0xaf, 0x5b,
0xa0, 0xff, 0xcb, 0x01, 0xf1, 0xb1, 0x40, 0x53, 0xf6, 0xee, 0x3e, 0xd5, 0x39, 0x75, 0xa6, 0xe9,
0x74, 0xa7, 0x59, 0xbd, 0x63, 0x66, 0xf4, 0x56, 0x99, 0xf2, 0x2d, 0x96, 0xed, 0x3b, 0xef, 0x90,
0xea, 0x77, 0x44, 0x69, 0xd1, 0xb8, 0x66, 0xb2, 0x0e, 0xf8, 0x43, 0x98, 0xc5, 0xda, 0xa0, 0x5d,
0x1b, 0xd6, 0x05, 0x93, 0x3b, 0xc0, 0x57, 0x70, 0x78, 0x53, 0x0b, 0x4f, 0x60, 0xb4, 0xd1, 0x39,
0x09, 0xc7, 0x1b, 0xfe, 0x7f, 0x7e, 0xd2, 0x6a, 0x6e, 0x6b, 0xeb, 0x78, 0x0a, 0xe3, 0x7a, 0xa5,
0xad, 0xe0, 0xeb, 0x34, 0x08, 0x9e, 0xdb, 0x5a, 0x67, 0x63, 0xbb, 0xdf, 0x5e, 0xfc, 0x0b, 0x00,
0x00, 0xff, 0xff, 0x60, 0x67, 0x5e, 0xab, 0xef, 0x04, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// BrokerClient is the client API for Broker service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type BrokerClient interface {
}
type brokerClient struct {
cc grpc.ClientConnInterface
}
func NewBrokerClient(cc grpc.ClientConnInterface) BrokerClient {
return &brokerClient{cc}
}
// BrokerServer is the server API for Broker service.
type BrokerServer interface {
}
// UnimplementedBrokerServer can be embedded to have forward compatible implementations.
type UnimplementedBrokerServer struct {
}
func RegisterBrokerServer(s *grpc.Server, srv BrokerServer) {
s.RegisterService(&_Broker_serviceDesc, srv)
}
var _Broker_serviceDesc = grpc.ServiceDesc{
ServiceName: "types.broker",
HandlerType: (*BrokerServer)(nil),
Methods: []grpc.MethodDesc{},
Streams: []grpc.StreamDesc{},
Metadata: "broker.proto",
}
package types
import "fmt"
// some errors definition
var (
ErrBrokerStorageTx = fmt.Errorf("%s", "The key doesn't exist!")
ErrInterChainEvent= fmt.Errorf("%s", "wrong interchain tx!")
ErrData = fmt.Errorf("%s","err interchain event data.")
)
\ No newline at end of file
......@@ -4,6 +4,7 @@ import (
_ "github.com/33cn/plugin/plugin/dapp/accountmanager" //auto gen
_ "github.com/33cn/plugin/plugin/dapp/autonomy" //auto gen
_ "github.com/33cn/plugin/plugin/dapp/blackwhite" //auto gen
_ "github.com/33cn/plugin/plugin/dapp/broker" //auto gen
_ "github.com/33cn/plugin/plugin/dapp/cert" //auto gen
_ "github.com/33cn/plugin/plugin/dapp/coinsx" //auto gen
_ "github.com/33cn/plugin/plugin/dapp/collateralize" //auto gen
......
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