Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
4652fb73
Commit
4652fb73
authored
Dec 17, 2021
by
harrylee
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update broker commands
parent
675bdfcd
Pipeline
#8376
canceled with stages
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
294 additions
and
1 deletion
+294
-1
commands.go
plugin/dapp/broker/commands/commands.go
+294
-1
No files found.
plugin/dapp/broker/commands/commands.go
View file @
4652fb73
...
@@ -2,6 +2,14 @@
...
@@ -2,6 +2,14 @@
package
commands
package
commands
import
(
import
(
"encoding/json"
"fmt"
"github.com/33cn/chain33/rpc/jsonclient"
rpctypes
"github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types"
brokerty
"github.com/33cn/plugin/plugin/dapp/broker/types"
storgety
"github.com/33cn/plugin/plugin/dapp/storage/types"
.
"github.com/bitly/go-simplejson"
"github.com/spf13/cobra"
"github.com/spf13/cobra"
)
)
...
@@ -17,7 +25,292 @@ func Cmd() *cobra.Command {
...
@@ -17,7 +25,292 @@ func Cmd() *cobra.Command {
Args
:
cobra
.
MinimumNArgs
(
1
),
Args
:
cobra
.
MinimumNArgs
(
1
),
}
}
cmd
.
AddCommand
(
cmd
.
AddCommand
(
//add sub command
//add sub command
InterchainGetRawTxCmd
(),
InterchainSetRawTxCmd
(),
Init_Broker
(),
QueryStorageCmd
(),
)
)
return
cmd
return
cmd
}
}
// InterchainGetRawTxCmd 发布信息交换跨链事件
func
InterchainGetRawTxCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"interchainGet"
,
Short
:
"publish a new event"
,
Run
:
emitDataSwapInterchainEvent
,
}
InterchainGetFlags
(
cmd
)
return
cmd
}
func
InterchainGetFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"dstServiceID"
,
"d"
,
""
,
"dst service id, such as
\"
link33:fabric:mychannel&data_swapper
\"
"
)
err
:=
cmd
.
MarkFlagRequired
(
"dstServiceID"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired dstServiceID Error: %v"
,
err
)
return
}
cmd
.
Flags
()
.
StringP
(
"args"
,
"a"
,
""
,
"func args, such as
\"
key
\"
"
)
err
=
cmd
.
MarkFlagRequired
(
"args"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired args Error: %v"
,
err
)
return
}
cmd
.
Flags
()
.
StringP
(
"argscb"
,
"c"
,
""
,
"callback func args, such as
\"
key
\"
"
)
err
=
cmd
.
MarkFlagRequired
(
"argscb"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired argscb Error: %v"
,
err
)
return
}
cmd
.
Flags
()
.
StringP
(
"argsrb"
,
"r"
,
""
,
"rollback func args"
)
err
=
cmd
.
MarkFlagRequired
(
"argsrb"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired argsrb Error: %v"
,
err
)
return
}
cmd
.
Flags
()
.
StringP
(
"func"
,
"f"
,
""
,
" func,callback,rollback"
)
err
=
cmd
.
MarkFlagRequired
(
"func"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired func Error: %v"
,
err
)
return
}
}
func
emitDataSwapInterchainEvent
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
rpcLaddr
,
err
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get rpc addr Error: %v"
,
err
)
return
}
dstServiceID
,
err
:=
cmd
.
Flags
()
.
GetString
(
"dstServiceID"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get dstServiceID Error: %v"
,
err
)
return
}
arg
,
err
:=
cmd
.
Flags
()
.
GetString
(
"args"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get args Error: %v"
,
err
)
return
}
argscb
,
err
:=
cmd
.
Flags
()
.
GetString
(
"argscb"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get argscb Error: %v"
,
err
)
return
}
argsrb
,
err
:=
cmd
.
Flags
()
.
GetString
(
"argsrb"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get argsrb Error: %v"
,
err
)
return
}
funcName
,
err
:=
cmd
.
Flags
()
.
GetString
(
"func"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get funcName Error: %v"
,
err
)
return
}
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
types
.
GetExecName
(
brokerty
.
BrokerX
,
paraName
),
ActionName
:
brokerty
.
NameEmitInterchainEventAction
,
Payload
:
[]
byte
(
fmt
.
Sprintf
(
"{
\"
dstServiceID
\"
:
\"
%s
\"
,
\"
func
\"
:
\"
%s
\"
,
\"
args
\"
:
\"
%s
\"
,
\"
argscb
\"
:
\"
%s
\"
,
\"
argsrb
\"
:
\"
%s
\"
}"
,
dstServiceID
,
funcName
,
arg
,
argscb
,
argsrb
)),
}
var
res
string
ctx
:=
jsonclient
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.CreateTransaction"
,
params
,
&
res
)
ctx
.
RunWithoutMarshal
()
}
// InterchainSet 发布信息交换跨链事件
func
InterchainSetRawTxCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"interchainSet"
,
Short
:
"storage the key value"
,
Run
:
interchainSet
,
}
InterchainSetFlags
(
cmd
)
return
cmd
}
func
InterchainSetFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"key"
,
"k"
,
""
,
"storage Kv, such as
\"
key
\"
"
)
err
:=
cmd
.
MarkFlagRequired
(
"key"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired key Error: %v"
,
err
)
return
}
cmd
.
Flags
()
.
StringP
(
"value"
,
"v"
,
""
,
"value of key"
)
err
=
cmd
.
MarkFlagRequired
(
"value"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired value Error: %v"
,
err
)
return
}
}
func
interchainSet
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
rpcLaddr
,
err
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get rpc addr Error: %v"
,
err
)
return
}
key
,
err
:=
cmd
.
Flags
()
.
GetString
(
"key"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get key Error: %v"
,
err
)
return
}
value
,
err
:=
cmd
.
Flags
()
.
GetString
(
"value"
)
if
err
!=
nil
{
fmt
.
Printf
(
"publishEvent get value Error: %v"
,
err
)
return
}
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
types
.
GetExecName
(
storgety
.
StorageX
,
paraName
),
ActionName
:
storgety
.
NameContentStorageAction
,
Payload
:
[]
byte
(
fmt
.
Sprintf
(
"{
\"
key
\"
:
\"
%s
\"
,
\"
value
\"
:
\"
%s
\"
}"
,
key
,
value
)),
}
var
res
string
ctx
:=
jsonclient
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.CreateTransaction"
,
params
,
&
res
)
ctx
.
RunWithoutMarshal
()
}
//初始化broker合约
func
Init_Broker
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"init_broker"
,
Short
:
"init broker contract"
,
Run
:
init_broker
,
}
initBrokerFlags
(
cmd
)
return
cmd
}
func
initBrokerFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"bxhID"
,
"b"
,
"link33"
,
"link33 version, such as
\"
link33
\"
"
)
err
:=
cmd
.
MarkFlagRequired
(
"bxhID"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired bxhID Error: %v"
,
err
)
return
}
cmd
.
Flags
()
.
StringP
(
"appChainID"
,
"a"
,
"chain33"
,
"appChainID, such as
\"
chain33
\"
"
)
err
=
cmd
.
MarkFlagRequired
(
"appChainID"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired appChainID Error: %v"
,
err
)
return
}
}
func
init_broker
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
rpcLaddr
,
err
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
if
err
!=
nil
{
fmt
.
Printf
(
"Init_Broker get rpc addr Error: %v"
,
err
)
return
}
bxhID
,
err
:=
cmd
.
Flags
()
.
GetString
(
"bxhID"
)
if
err
!=
nil
{
fmt
.
Printf
(
"Init_Broker get bxhID Error: %v"
,
err
)
return
}
appChainID
,
err
:=
cmd
.
Flags
()
.
GetString
(
"appChainID"
)
if
err
!=
nil
{
fmt
.
Printf
(
"Init_Broker get appChainID Error: %v"
,
err
)
return
}
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
types
.
GetExecName
(
brokerty
.
BrokerX
,
paraName
),
ActionName
:
brokerty
.
NameInitAction
,
Payload
:
[]
byte
(
fmt
.
Sprintf
(
"{
\"
bxhId
\"
:
\"
%s
\"
,
\"
appChainId
\"
:
\"
%s
\"
}"
,
bxhID
,
appChainID
)),
}
var
res
string
ctx
:=
jsonclient
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.CreateTransaction"
,
params
,
&
res
)
ctx
.
RunWithoutMarshal
()
}
func
QueryStorageByKey
(
prefix
,
rpcLaddr
,
key
string
)
(
*
storgety
.
Storage
,
error
)
{
params
:=
&
rpctypes
.
Query4Jrpc
{
Execer
:
types
.
GetExecName
(
storgety
.
StorageX
,
prefix
),
FuncName
:
storgety
.
FuncNameQueryStorage
,
Payload
:
[]
byte
(
fmt
.
Sprintf
(
"{
\"
txHash
\"
:
\"
%s
\"
}"
,
key
)),
}
var
res
json
.
RawMessage
ctx
:=
jsonclient
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
&
res
)
ctx
.
SetResultCb
(
ParseStorage
)
data
,
err
:=
ctx
.
RunResult
()
if
err
!=
nil
{
return
nil
,
err
}
return
data
.
(
*
storgety
.
Storage
),
nil
}
func
QueryStorageCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"query"
,
Short
:
"Query storage by key"
,
Run
:
getStorage
,
}
GetStorageFlags
(
cmd
)
return
cmd
}
func
GetStorageFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"key"
,
"k"
,
""
,
"get storage key, such as
\"
key
\"
"
)
err
:=
cmd
.
MarkFlagRequired
(
"key"
)
if
err
!=
nil
{
fmt
.
Printf
(
"MarkFlagRequired get key Error: %v"
,
err
)
return
}
}
func
getStorage
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
rpcLaddr
,
err
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
if
err
!=
nil
{
fmt
.
Printf
(
"getStorage get rpc addr Error: %v"
,
err
)
return
}
key
,
err
:=
cmd
.
Flags
()
.
GetString
(
"key"
)
if
err
!=
nil
{
fmt
.
Printf
(
"getStorage get dstServiceID Error: %v"
,
err
)
return
}
storage
,
err
:=
QueryStorageByKey
(
paraName
,
rpcLaddr
,
key
)
if
err
!=
nil
{
fmt
.
Println
(
"QueryStorageBykey Error: %v"
,
err
)
return
}
fmt
.
Println
(
storage
.
GetContentStorage
()
.
GetValue
())
return
}
// 回调解析函数
func
ParseStorage
(
res
interface
{})
(
interface
{},
error
)
{
raw
,
ok
:=
res
.
(
*
json
.
RawMessage
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"res is not json rawMessage type!"
)
}
js
,
err
:=
NewJson
(
*
raw
)
if
err
!=
nil
{
return
nil
,
err
}
if
contentStorge
,
ok
:=
js
.
CheckGet
(
"contentStorage"
);
ok
{
value
,
_
:=
contentStorge
.
Get
(
"value"
)
.
String
()
key
,
_
:=
contentStorge
.
Get
(
"key"
)
.
String
()
op
,
_
:=
contentStorge
.
Get
(
"op"
)
.
Int
()
storage
:=
&
storgety
.
Storage
{
Ty
:
storgety
.
TyContentStorageAction
,
Value
:
&
storgety
.
Storage_ContentStorage
{
ContentStorage
:
&
storgety
.
ContentOnlyNotaryStorage
{
Content
:
nil
,
Key
:
key
,
Op
:
int32
(
op
),
Value
:
value
,
}}}
return
storage
,
nil
}
return
nil
,
fmt
.
Errorf
(
"unknow storage type!"
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment