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
7f73d32d
Commit
7f73d32d
authored
Nov 23, 2018
by
mdj33
Committed by
vipwzw
Nov 26, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
correct relay plugin lint error
parent
0ac1f080
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
290 additions
and
329 deletions
+290
-329
btcd.go
plugin/dapp/relay/cmd/relayd/relayd/btcd.go
+22
-21
btcd_test.go
plugin/dapp/relay/cmd/relayd/relayd/btcd_test.go
+1
-1
btcweb.go
plugin/dapp/relay/cmd/relayd/relayd/btcweb.go
+9
-9
btcweb_test.go
plugin/dapp/relay/cmd/relayd/relayd/btcweb_test.go
+1
-1
chain33.go
plugin/dapp/relay/cmd/relayd/relayd/chain33.go
+7
-2
config.go
plugin/dapp/relay/cmd/relayd/relayd/config.go
+8
-2
db.go
plugin/dapp/relay/cmd/relayd/relayd/db.go
+2
-1
relayd.go
plugin/dapp/relay/cmd/relayd/relayd/relayd.go
+7
-3
type.go
plugin/dapp/relay/cmd/relayd/relayd/type.go
+19
-19
relay.go
plugin/dapp/relay/commands/relay.go
+16
-4
types.go
plugin/dapp/relay/commands/types.go
+2
-2
relay.go
plugin/dapp/relay/executor/relay.go
+26
-24
relay_test.go
plugin/dapp/relay/executor/relay_test.go
+24
-24
relaybtc.go
plugin/dapp/relay/executor/relaybtc.go
+20
-20
relaybtc_test.go
plugin/dapp/relay/executor/relaybtc_test.go
+26
-26
relaydb.go
plugin/dapp/relay/executor/relaydb.go
+26
-26
relaydb_test.go
plugin/dapp/relay/executor/relaydb_test.go
+0
-0
rpc.go
plugin/dapp/relay/rpc/rpc.go
+18
-18
rpc_test.go
plugin/dapp/relay/rpc/rpc_test.go
+2
-2
types.go
plugin/dapp/relay/rpc/types.go
+5
-4
errors.go
plugin/dapp/relay/types/errors.go
+18
-1
relay.go
plugin/dapp/relay/types/relay.go
+31
-119
No files found.
plugin/dapp/relay/cmd/relayd/relayd/btcd.go
View file @
7f73d32d
...
...
@@ -18,6 +18,7 @@ import (
"github.com/btcsuite/btcd/rpcclient"
)
// BtcClient interface
type
BtcClient
interface
{
Start
()
error
Stop
()
error
...
...
@@ -29,28 +30,28 @@ type BtcClient interface {
}
type
(
B
lockStamp
struct
{
b
lockStamp
struct
{
Height
int32
Hash
chainhash
.
Hash
}
B
lockMeta
struct
{
B
lockStamp
b
lockMeta
struct
{
b
lockStamp
Time
time
.
Time
}
C
lientConnected
struct
{}
BlockConnected
B
lockMeta
BlockDisconnected
B
lockMeta
c
lientConnected
struct
{}
blockConnected
b
lockMeta
blockDisconnected
b
lockMeta
)
type
P
arams
struct
{
type
p
arams
struct
{
*
chaincfg
.
Params
RPCClientPort
string
RPCServerPort
string
}
var
MainNetParams
=
P
arams
{
var
mainNetParams
=
p
arams
{
Params
:
&
chaincfg
.
MainNetParams
,
RPCClientPort
:
"8334"
,
RPCServerPort
:
"8332"
,
...
...
@@ -63,24 +64,24 @@ type btcdClient struct {
reconnectAttempts
int
enqueueNotification
chan
interface
{}
dequeueNotification
chan
interface
{}
currentBlock
chan
*
B
lockStamp
currentBlock
chan
*
b
lockStamp
quit
chan
struct
{}
wg
sync
.
WaitGroup
started
bool
quitMtx
sync
.
Mutex
}
func
N
ewBtcd
(
config
*
rpcclient
.
ConnConfig
,
reconnectAttempts
int
)
(
BtcClient
,
error
)
{
func
n
ewBtcd
(
config
*
rpcclient
.
ConnConfig
,
reconnectAttempts
int
)
(
BtcClient
,
error
)
{
if
reconnectAttempts
<
0
{
return
nil
,
errors
.
New
(
"ReconnectAttempts must be positive"
)
}
client
:=
&
btcdClient
{
connConfig
:
config
,
chainParams
:
M
ainNetParams
.
Params
,
chainParams
:
m
ainNetParams
.
Params
,
reconnectAttempts
:
reconnectAttempts
,
enqueueNotification
:
make
(
chan
interface
{}),
dequeueNotification
:
make
(
chan
interface
{}),
currentBlock
:
make
(
chan
*
B
lockStamp
),
currentBlock
:
make
(
chan
*
b
lockStamp
),
quit
:
make
(
chan
struct
{}),
}
ntfnCallbacks
:=
&
rpcclient
.
NotificationHandlers
{
...
...
@@ -147,7 +148,7 @@ func (b *btcdClient) Notifications() <-chan interface{} {
return
b
.
dequeueNotification
}
func
(
b
*
btcdClient
)
BlockStamp
()
(
*
B
lockStamp
,
error
)
{
func
(
b
*
btcdClient
)
BlockStamp
()
(
*
b
lockStamp
,
error
)
{
select
{
case
bs
:=
<-
b
.
currentBlock
:
return
bs
,
nil
...
...
@@ -158,15 +159,15 @@ func (b *btcdClient) BlockStamp() (*BlockStamp, error) {
func
(
b
*
btcdClient
)
onClientConnect
()
{
select
{
case
b
.
enqueueNotification
<-
C
lientConnected
{}
:
case
b
.
enqueueNotification
<-
c
lientConnected
{}
:
case
<-
b
.
quit
:
}
}
func
(
b
*
btcdClient
)
onBlockConnected
(
hash
*
chainhash
.
Hash
,
height
int32
,
time
time
.
Time
)
{
select
{
case
b
.
enqueueNotification
<-
B
lockConnected
{
BlockStamp
:
B
lockStamp
{
case
b
.
enqueueNotification
<-
b
lockConnected
{
blockStamp
:
b
lockStamp
{
Hash
:
*
hash
,
Height
:
height
,
},
...
...
@@ -178,8 +179,8 @@ func (b *btcdClient) onBlockConnected(hash *chainhash.Hash, height int32, time t
func
(
b
*
btcdClient
)
onBlockDisconnected
(
hash
*
chainhash
.
Hash
,
height
int32
,
time
time
.
Time
)
{
select
{
case
b
.
enqueueNotification
<-
B
lockDisconnected
{
BlockStamp
:
B
lockStamp
{
case
b
.
enqueueNotification
<-
b
lockDisconnected
{
blockStamp
:
b
lockStamp
{
Hash
:
*
hash
,
Height
:
height
,
},
...
...
@@ -197,7 +198,7 @@ func (b *btcdClient) handler() {
return
}
bs
:=
&
B
lockStamp
{
Hash
:
*
hash
,
Height
:
height
}
bs
:=
&
b
lockStamp
{
Hash
:
*
hash
,
Height
:
height
}
var
notifications
[]
interface
{}
enqueue
:=
b
.
enqueueNotification
var
dequeue
chan
interface
{}
...
...
@@ -225,8 +226,8 @@ out:
pingChan
=
time
.
After
(
time
.
Minute
)
case
dequeue
<-
next
:
if
n
,
ok
:=
next
.
(
B
lockConnected
);
ok
{
bs
=
&
B
lockStamp
{
if
n
,
ok
:=
next
.
(
b
lockConnected
);
ok
{
bs
=
&
b
lockStamp
{
Height
:
n
.
Height
,
Hash
:
n
.
Hash
,
}
...
...
plugin/dapp/relay/cmd/relayd/relayd/btcd_test.go
View file @
7f73d32d
...
...
@@ -36,7 +36,7 @@ func (s *suiteBctd) SetupSuite() {
HTTPPostMode
:
true
,
Certificates
:
certs
,
}
s
.
btc
,
_
=
N
ewBtcd
(
connCfg
,
reconnectAttempts
)
s
.
btc
,
_
=
n
ewBtcd
(
connCfg
,
reconnectAttempts
)
}
func
(
s
*
suiteBctd
)
TestGetBlockHeader
()
{
...
...
plugin/dapp/relay/cmd/relayd/relayd/btcweb.go
View file @
7f73d32d
...
...
@@ -22,7 +22,7 @@ type btcWeb struct {
httpClient
*
fasthttp
.
Client
}
func
N
ewBtcWeb
()
(
BtcClient
,
error
)
{
func
n
ewBtcWeb
()
(
BtcClient
,
error
)
{
b
:=
&
btcWeb
{
urlRoot
:
"https://blockchain.info"
,
httpClient
:
&
fasthttp
.
Client
{
TLSConfig
:
&
tls
.
Config
{
InsecureSkipVerify
:
true
}},
...
...
@@ -46,16 +46,16 @@ func (b *btcWeb) GetBlockHeader(height uint64) (*ty.BtcHeader, error) {
return
block
.
BtcHeader
(),
nil
}
func
(
b
*
btcWeb
)
getBlock
(
height
uint64
)
(
*
B
lock
,
error
)
{
func
(
b
*
btcWeb
)
getBlock
(
height
uint64
)
(
*
b
lock
,
error
)
{
if
height
<
0
{
return
nil
,
errors
.
New
(
"height < 0"
)
}
url
:=
fmt
.
Sprintf
(
"%s/block-height/%d?format=json"
,
b
.
urlRoot
,
height
)
data
,
err
:=
b
.
requestU
rl
(
url
)
data
,
err
:=
b
.
requestU
RL
(
url
)
if
err
!=
nil
{
return
nil
,
err
}
var
blocks
=
B
locks
{}
var
blocks
=
b
locks
{}
err
=
json
.
Unmarshal
(
data
,
&
blocks
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -66,11 +66,11 @@ func (b *btcWeb) getBlock(height uint64) (*Block, error) {
func
(
b
*
btcWeb
)
GetLatestBlock
()
(
*
chainhash
.
Hash
,
uint64
,
error
)
{
url
:=
b
.
urlRoot
+
"/latestblock"
data
,
err
:=
b
.
requestU
rl
(
url
)
data
,
err
:=
b
.
requestU
RL
(
url
)
if
err
!=
nil
{
return
nil
,
0
,
err
}
var
blocks
=
L
atestBlock
{}
var
blocks
=
l
atestBlock
{}
err
=
json
.
Unmarshal
(
data
,
&
blocks
)
if
err
!=
nil
{
return
nil
,
0
,
err
...
...
@@ -94,11 +94,11 @@ func (b *btcWeb) Ping() {
func
(
b
*
btcWeb
)
GetTransaction
(
hash
string
)
(
*
ty
.
BtcTransaction
,
error
)
{
url
:=
b
.
urlRoot
+
"/rawtx/"
+
hash
data
,
err
:=
b
.
requestU
rl
(
url
)
data
,
err
:=
b
.
requestU
RL
(
url
)
if
err
!=
nil
{
return
nil
,
err
}
var
tx
=
T
ransactionResult
{}
var
tx
=
t
ransactionResult
{}
err
=
json
.
Unmarshal
(
data
,
&
tx
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -135,7 +135,7 @@ func (b *btcWeb) GetSPV(height uint64, txHash string) (*ty.BtcSpv, error) {
return
spv
,
nil
}
func
(
b
*
btcWeb
)
requestU
rl
(
url
string
)
([]
byte
,
error
)
{
func
(
b
*
btcWeb
)
requestU
RL
(
url
string
)
([]
byte
,
error
)
{
status
,
body
,
err
:=
b
.
httpClient
.
Get
(
nil
,
url
)
if
err
!=
nil
{
return
nil
,
err
...
...
plugin/dapp/relay/cmd/relayd/relayd/btcweb_test.go
View file @
7f73d32d
...
...
@@ -22,7 +22,7 @@ func TestRunSuiteWeb(t *testing.T) {
}
func
(
s
*
suiteWeb
)
SetupSuite
()
{
s
.
btc
,
_
=
N
ewBtcWeb
()
s
.
btc
,
_
=
n
ewBtcWeb
()
}
func
(
s
*
suiteWeb
)
TestGetBlockHeader
()
{
...
...
plugin/dapp/relay/cmd/relayd/relayd/chain33.go
View file @
7f73d32d
...
...
@@ -16,6 +16,7 @@ import (
"google.golang.org/grpc"
)
// Client33 to connect with chain33
type
Client33
struct
{
config
*
Chain33
isSyncing
bool
...
...
@@ -25,6 +26,7 @@ type Client33 struct {
closer
io
.
Closer
}
// NewClient33 new client instance
func
NewClient33
(
cfg
*
Chain33
)
*
Client33
{
conn
,
err
:=
grpc
.
Dial
(
cfg
.
Host
,
grpc
.
WithInsecure
())
if
err
!=
nil
{
...
...
@@ -53,7 +55,7 @@ out:
err
:=
c
.
ping
(
ctx
)
if
err
!=
nil
{
log
.
Error
(
"heartbeat"
,
"heartbeat chain33 error: "
,
err
.
Error
(),
"reconnectAttempts: "
,
reconnectAttempts
)
c
.
A
utoReconnect
(
ctx
)
c
.
a
utoReconnect
(
ctx
)
reconnectAttempts
--
}
else
{
reconnectAttempts
=
c
.
config
.
ReconnectAttempts
...
...
@@ -66,6 +68,7 @@ out:
}
}
// Start begin heartbeat to chain33
func
(
c
*
Client33
)
Start
(
ctx
context
.
Context
)
{
go
c
.
heartbeat
(
ctx
)
}
...
...
@@ -93,7 +96,7 @@ func (c *Client33) ping(ctx context.Context) error {
return
nil
}
func
(
c
*
Client33
)
A
utoReconnect
(
ctx
context
.
Context
)
{
func
(
c
*
Client33
)
a
utoReconnect
(
ctx
context
.
Context
)
{
if
c
.
isClosed
&&
!
c
.
config
.
DisableAutoReconnect
{
c
.
closer
.
Close
()
conn
,
err
:=
grpc
.
Dial
(
c
.
config
.
Host
,
grpc
.
WithInsecure
())
...
...
@@ -109,6 +112,7 @@ func (c *Client33) AutoReconnect(ctx context.Context) {
}
}
// SendTransaction send tx to chain33
func
(
c
*
Client33
)
SendTransaction
(
ctx
context
.
Context
,
in
*
types
.
Transaction
)
(
*
types
.
Reply
,
error
)
{
if
c
.
isSyncing
{
return
nil
,
errors
.
New
(
"node is syncing"
)
...
...
@@ -116,6 +120,7 @@ func (c *Client33) SendTransaction(ctx context.Context, in *types.Transaction) (
return
c
.
Chain33Client
.
SendTransaction
(
ctx
,
in
)
}
// Close chain33 close
func
(
c
*
Client33
)
Close
()
error
{
return
c
.
closer
.
Close
()
}
plugin/dapp/relay/cmd/relayd/relayd/config.go
View file @
7f73d32d
...
...
@@ -13,6 +13,7 @@ import (
"github.com/btcsuite/btcd/rpcclient"
)
// Config relayd toml config
type
Config
struct
{
Title
string
Watch
bool
...
...
@@ -28,8 +29,9 @@ type Config struct {
Auth
Auth
}
// Btcd adapt to btcd
type
Btcd
struct
{
I
d
string
I
D
string
Host
string
Endpoint
string
User
string
...
...
@@ -46,12 +48,14 @@ type Btcd struct {
ReconnectAttempts
int
}
// Auth auth key struct
type
Auth
struct
{
PrivateKey
string
`json:"privateKey"`
PublicKey
string
`json:"publicKey"`
Address
string
`json:"address"`
}
// BitConnConfig btc connect config
func
(
b
*
Btcd
)
BitConnConfig
()
*
rpcclient
.
ConnConfig
{
conn
:=
&
rpcclient
.
ConnConfig
{}
conn
.
Host
=
b
.
Host
...
...
@@ -74,8 +78,9 @@ func (b *Btcd) BitConnConfig() *rpcclient.ConnConfig {
return
conn
}
// Chain33 define adapt to chain33 relay exec
type
Chain33
struct
{
I
d
string
I
D
string
Host
string
User
string
Pass
string
...
...
@@ -83,6 +88,7 @@ type Chain33 struct {
ReconnectAttempts
int
}
// NewConfig create a new config
func
NewConfig
(
path
string
)
*
Config
{
var
cfg
Config
if
_
,
err
:=
toml
.
DecodeFile
(
path
,
&
cfg
);
err
!=
nil
{
...
...
plugin/dapp/relay/cmd/relayd/relayd/db.go
View file @
7f73d32d
...
...
@@ -26,7 +26,8 @@ type relaydDB struct {
db
db
.
DB
}
func
NewRelayDB
(
name
string
,
dir
string
,
cache
int32
)
*
relaydDB
{
func
newRelayDB
(
name
string
,
dir
string
,
cache
int32
)
*
relaydDB
{
d
:=
db
.
NewDB
(
name
,
"goleveldb"
,
dir
,
cache
)
return
&
relaydDB
{
d
}
}
...
...
plugin/dapp/relay/cmd/relayd/relayd/relayd.go
View file @
7f73d32d
...
...
@@ -22,6 +22,7 @@ import (
"github.com/btcsuite/btcd/chaincfg/chainhash"
)
// Relayd define
type
Relayd
struct
{
config
*
Config
db
*
relaydDB
...
...
@@ -40,13 +41,14 @@ type Relayd struct {
isResetBtcHeight
bool
}
// NewRelayd create relayd instance
func
NewRelayd
(
config
*
Config
)
*
Relayd
{
ctx
,
cancel
:=
context
.
WithCancel
(
context
.
Background
())
dir
,
err
:=
os
.
Getwd
()
if
err
!=
nil
{
panic
(
err
)
}
db
:=
N
ewRelayDB
(
"relayd"
,
dir
,
256
)
db
:=
n
ewRelayDB
(
"relayd"
,
dir
,
256
)
var
firstHeight
int
var
isResetBtcHeight
bool
...
...
@@ -84,9 +86,9 @@ func NewRelayd(config *Config) *Relayd {
client33
:=
NewClient33
(
&
config
.
Chain33
)
var
btc
BtcClient
if
config
.
BtcdOrWeb
==
0
{
btc
,
err
=
N
ewBtcd
(
config
.
Btcd
.
BitConnConfig
(),
config
.
Btcd
.
ReconnectAttempts
)
btc
,
err
=
n
ewBtcd
(
config
.
Btcd
.
BitConnConfig
(),
config
.
Btcd
.
ReconnectAttempts
)
}
else
{
btc
,
err
=
N
ewBtcWeb
()
btc
,
err
=
n
ewBtcWeb
()
}
if
err
!=
nil
{
panic
(
err
)
...
...
@@ -140,11 +142,13 @@ func NewRelayd(config *Config) *Relayd {
}
}
// Close relayd close
func
(
r
*
Relayd
)
Close
()
{
r
.
client33
.
Close
()
r
.
cancel
()
}
// Start relayd start up
func
(
r
*
Relayd
)
Start
()
{
r
.
btcClient
.
Start
()
r
.
client33
.
Start
(
r
.
ctx
)
...
...
plugin/dapp/relay/cmd/relayd/relayd/type.go
View file @
7f73d32d
...
...
@@ -14,7 +14,7 @@ var (
privateKey
=
[]
byte
(
"privateKey-relayd"
)
)
type
L
atestBlock
struct
{
type
l
atestBlock
struct
{
Hash
string
`json:"hash"`
Time
int64
`json:"time"`
BlockIndex
uint64
`json:"block_index"`
...
...
@@ -22,7 +22,7 @@ type LatestBlock struct {
TxIndexes
[]
uint64
`json:"txIndexes"`
}
type
H
eader
struct
{
type
h
eader
struct
{
Hash
string
`json:"hash"`
Ver
uint64
`json:"ver"`
PrevBlock
string
`json:"prev_block"`
...
...
@@ -40,7 +40,7 @@ type Header struct {
RelayedBy
string
`json:"relayed_by"`
}
func
(
b
*
B
lock
)
BtcHeader
()
*
ty
.
BtcHeader
{
func
(
b
*
b
lock
)
BtcHeader
()
*
ty
.
BtcHeader
{
return
&
ty
.
BtcHeader
{
Hash
:
b
.
Hash
,
Height
:
b
.
Height
,
...
...
@@ -53,8 +53,8 @@ func (b *Block) BtcHeader() *ty.BtcHeader {
}
}
type
B
lock
struct
{
//
H
eader
type
b
lock
struct
{
//
h
eader
Hash
string
`json:"hash"`
Ver
uint64
`json:"ver"`
PrevBlock
string
`json:"prev_block"`
...
...
@@ -70,14 +70,14 @@ type Block struct {
Height
uint64
`json:"height"`
ReceivedTime
int64
`json:"received_time"`
RelayedBy
string
`json:"relayed_by"`
Tx
[]
T
ransactionDetails
`json:"tx"`
Tx
[]
t
ransactionDetails
`json:"tx"`
}
type
T
ransactionDetails
struct
{
type
t
ransactionDetails
struct
{
LockTime
int64
`json:"lock_time"`
Ver
uint64
`json:"ver"`
Size
uint64
`json:"size"`
Inputs
[]
T
xInput
`json:"inputs"`
Inputs
[]
t
xInput
`json:"inputs"`
Weight
int64
`json:"weight"`
Time
int64
`json:"time"`
TxIndex
uint64
`json:"tx_index"`
...
...
@@ -85,16 +85,16 @@ type TransactionDetails struct {
Hash
string
`json:"hash"`
VoutSz
uint64
`json:"vout_sz"`
RelayedBy
string
`json:"relayed_by"`
Outs
[]
T
xOut
`json:"out"`
Outs
[]
t
xOut
`json:"out"`
}
type
T
xInput
struct
{
type
t
xInput
struct
{
Sequence
int64
`json:"sequence"`
Witness
string
`json:"witness"`
Script
string
`json:"script"`
}
type
T
xOut
struct
{
type
t
xOut
struct
{
Spent
bool
`json:"spent"`
TxIndex
uint64
`json:"tx_index"`
Type
int
`json:"type"`
...
...
@@ -104,17 +104,17 @@ type TxOut struct {
Script
string
`json:"script"`
}
type
B
locks
struct
{
Blocks
[]
B
lock
`json:"blocks"`
type
b
locks
struct
{
Blocks
[]
b
lock
`json:"blocks"`
}
type
T
ransactionResult
struct
{
type
t
ransactionResult
struct
{
Ver
uint
`json:"ver"`
Inputs
[]
I
nputs
`json:"inputs"`
Inputs
[]
i
nputs
`json:"inputs"`
Weight
int64
`json:"weight"`
BlockHeight
uint64
`json:"block_height"`
RelayedBy
string
`json:"relayed_by"`
Out
[]
T
xOut
`json:"out"`
Out
[]
t
xOut
`json:"out"`
LockTime
int64
`json:"lock_time"`
Size
uint64
`json:"size"`
DoubleSpend
bool
`json:"double_spend"`
...
...
@@ -125,14 +125,14 @@ type TransactionResult struct {
VoutSz
uint64
`json:"vout_sz"`
}
type
I
nputs
struct
{
type
i
nputs
struct
{
Sequence
uint
`json:"sequence"`
Witness
string
`json:"witness"`
PrevOut
T
xOut
`json:"prev_out"`
PrevOut
t
xOut
`json:"prev_out"`
Script
string
`json:"script"`
}
func
(
t
*
T
ransactionResult
)
BtcTransaction
()
*
ty
.
BtcTransaction
{
func
(
t
*
t
ransactionResult
)
BtcTransaction
()
*
ty
.
BtcTransaction
{
btcTx
:=
&
ty
.
BtcTransaction
{}
btcTx
.
Hash
=
t
.
Hash
btcTx
.
Time
=
t
.
Time
...
...
plugin/dapp/relay/commands/relay.go
View file @
7f73d32d
...
...
@@ -17,6 +17,7 @@ import (
"github.com/spf13/cobra"
)
// RelayCmd relay exec cmd register
func
RelayCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"relay"
,
...
...
@@ -41,6 +42,7 @@ func RelayCmd() *cobra.Command {
return
cmd
}
// ShowBTCHeadHeightListCmd show btc head height list cmd
func
ShowBTCHeadHeightListCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"btc_height_list"
,
...
...
@@ -94,6 +96,7 @@ func showBtcHeadHeightList(cmd *cobra.Command, args []string) {
parseRelayBtcHeadHeightList
(
res
)
}
// ShowBTCHeadCurHeightCmd show BTC head current height in chain33
func
ShowBTCHeadCurHeightCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"btc_cur_height"
,
...
...
@@ -137,6 +140,7 @@ func showBtcHeadCurHeight(cmd *cobra.Command, args []string) {
parseRelayBtcCurHeight
(
res
)
}
// ShowOnesCreateRelayOrdersCmd show ones created orders
func
ShowOnesCreateRelayOrdersCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"creator_orders"
,
...
...
@@ -187,6 +191,7 @@ func showOnesRelayOrders(cmd *cobra.Command, args []string) {
parseRelayOrders
(
res
)
}
// ShowOnesAcceptRelayOrdersCmd show ones accepted orders
func
ShowOnesAcceptRelayOrdersCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"acceptor_orders"
,
...
...
@@ -236,6 +241,7 @@ func showRelayAcceptOrders(cmd *cobra.Command, args []string) {
parseRelayOrders
(
res
)
}
// ShowOnesStatusOrdersCmd show ones order's status
func
ShowOnesStatusOrdersCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"status"
,
...
...
@@ -292,8 +298,8 @@ func showCoinRelayOrders(cmd *cobra.Command, args []string) {
func
parseRelayOrders
(
res
ty
.
ReplyRelayOrders
)
{
for
_
,
order
:=
range
res
.
Relayorders
{
var
show
R
elayOrder2Show
show
.
OrderI
d
=
order
.
Id
var
show
r
elayOrder2Show
show
.
OrderI
D
=
order
.
Id
show
.
Status
=
order
.
Status
.
String
()
show
.
Creator
=
order
.
CreaterAddr
show
.
CoinOperation
=
ty
.
RelayOrderOperation
[
order
.
CoinOperation
]
...
...
@@ -334,6 +340,7 @@ func parseRelayBtcCurHeight(res ty.ReplayRelayQryBTCHeadHeight) {
fmt
.
Println
(
string
(
data
))
}
// CreateRawRelayOrderTxCmd create relay order, buy or sell
func
CreateRawRelayOrderTxCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"create"
,
...
...
@@ -395,6 +402,7 @@ func relayOrder(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
}
// CreateRawRelayAcceptTxCmd accept order
func
CreateRawRelayAcceptTxCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"accept"
,
...
...
@@ -437,6 +445,7 @@ func relayAccept(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
}
// CreateRawRevokeTxCmd revoke order
func
CreateRawRevokeTxCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"revoke"
,
...
...
@@ -476,6 +485,7 @@ func relayRevoke(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
}
// CreateRawRelayConfirmTxCmd confirm tx
func
CreateRawRelayConfirmTxCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"confirm"
,
...
...
@@ -498,11 +508,11 @@ func addConfirmFlags(cmd *cobra.Command) {
func
relayConfirm
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
orderI
d
,
_
:=
cmd
.
Flags
()
.
GetString
(
"order_id"
)
orderI
D
,
_
:=
cmd
.
Flags
()
.
GetString
(
"order_id"
)
txHash
,
_
:=
cmd
.
Flags
()
.
GetString
(
"tx_hash"
)
params
:=
&
ty
.
RelayConfirmTx
{
OrderId
:
orderI
d
,
OrderId
:
orderI
D
,
TxHash
:
txHash
,
}
var
res
string
...
...
@@ -510,6 +520,7 @@ func relayConfirm(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
}
// CreateRawRelayBtcHeaderCmd save btc header from cli
func
CreateRawRelayBtcHeaderCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"save_header"
,
...
...
@@ -559,6 +570,7 @@ func relaySaveBtcHead(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
}
// CreateRawRelayVerifyBTCTxCmd verify btc tx from cli
func
CreateRawRelayVerifyBTCTxCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"verify"
,
...
...
plugin/dapp/relay/commands/types.go
View file @
7f73d32d
...
...
@@ -4,8 +4,8 @@
package
commands
type
R
elayOrder2Show
struct
{
OrderI
d
string
`json:"orderid"`
type
r
elayOrder2Show
struct
{
OrderI
D
string
`json:"orderid"`
Status
string
`json:"status"`
Creator
string
`json:"address"`
Amount
string
`json:"amount"`
...
...
plugin/dapp/relay/executor/relay.go
View file @
7f73d32d
...
...
@@ -22,10 +22,12 @@ func init() {
ety
.
InitFuncList
(
types
.
ListMethod
(
&
relay
{}))
}
// Init relay register driver
func
Init
(
name
string
,
sub
[]
byte
)
{
drivers
.
Register
(
GetName
(),
newRelay
,
types
.
GetDappFork
(
driverName
,
"Enable"
))
//TODO: ForkV18Relay
}
// GetName relay get driver name
func
GetName
()
string
{
return
newRelay
()
.
GetName
()
}
...
...
@@ -45,7 +47,7 @@ func (r *relay) GetDriverName() string {
return
driverName
}
func
(
c
*
relay
)
GetPayloadValue
()
types
.
Message
{
func
(
r
*
relay
)
GetPayloadValue
()
types
.
Message
{
return
&
ty
.
RelayAction
{}
}
...
...
@@ -119,16 +121,16 @@ func (r *relay) GetSellOrder(prefixs [][]byte) (types.Message, error) {
}
func
(
r
*
relay
)
getRelayOrderReply
(
OrderI
d
s
[][]
byte
)
(
types
.
Message
,
error
)
{
OrderId
Got
:=
make
(
map
[
string
]
bool
)
func
(
r
*
relay
)
getRelayOrderReply
(
OrderI
D
s
[][]
byte
)
(
types
.
Message
,
error
)
{
orderID
Got
:=
make
(
map
[
string
]
bool
)
var
reply
ty
.
ReplyRelayOrders
for
_
,
OrderId
:=
range
OrderId
s
{
if
!
OrderIdGot
[
string
(
OrderId
)]
{
if
order
,
err
:=
r
.
getSellOrderFromDb
(
OrderId
);
err
==
nil
{
for
_
,
orderID
:=
range
OrderID
s
{
if
!
orderIDGot
[
string
(
orderID
)]
{
if
order
,
err
:=
r
.
getSellOrderFromDb
(
orderID
);
err
==
nil
{
reply
.
Relayorders
=
insertOrderDescending
(
order
,
reply
.
Relayorders
)
}
OrderIdGot
[
string
(
OrderId
)]
=
true
orderIDGot
[
string
(
orderID
)]
=
true
}
}
return
&
reply
,
nil
...
...
@@ -157,8 +159,8 @@ func insertOrderDescending(toBeInserted *ty.RelayOrder, orders []*ty.RelayOrder)
return
orders
}
func
(
r
*
relay
)
getSellOrderFromDb
(
OrderI
d
[]
byte
)
(
*
ty
.
RelayOrder
,
error
)
{
value
,
err
:=
r
.
GetStateDB
()
.
Get
(
OrderI
d
)
func
(
r
*
relay
)
getSellOrderFromDb
(
OrderI
D
[]
byte
)
(
*
ty
.
RelayOrder
,
error
)
{
value
,
err
:=
r
.
GetStateDB
()
.
Get
(
OrderI
D
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -177,8 +179,8 @@ func (r *relay) getBTCHeaderFromDb(hash []byte) (*ty.BtcHeader, error) {
return
&
header
,
nil
}
func
(
r
*
relay
)
getOrderKv
(
OrderI
d
[]
byte
,
ty
int32
)
[]
*
types
.
KeyValue
{
order
,
_
:=
r
.
getSellOrderFromDb
(
OrderI
d
)
func
(
r
*
relay
)
getOrderKv
(
OrderI
D
[]
byte
,
ty
int32
)
[]
*
types
.
KeyValue
{
order
,
_
:=
r
.
getSellOrderFromDb
(
OrderI
D
)
var
kv
[]
*
types
.
KeyValue
kv
=
deleteCreateOrderKeyValue
(
kv
,
order
,
int32
(
order
.
PreStatus
))
...
...
@@ -187,8 +189,8 @@ func (r *relay) getOrderKv(OrderId []byte, ty int32) []*types.KeyValue {
return
kv
}
func
(
r
*
relay
)
getDeleteOrderKv
(
OrderI
d
[]
byte
,
ty
int32
)
[]
*
types
.
KeyValue
{
order
,
_
:=
r
.
getSellOrderFromDb
(
OrderI
d
)
func
(
r
*
relay
)
getDeleteOrderKv
(
OrderI
D
[]
byte
,
ty
int32
)
[]
*
types
.
KeyValue
{
order
,
_
:=
r
.
getSellOrderFromDb
(
OrderI
D
)
var
kv
[]
*
types
.
KeyValue
kv
=
deleteCreateOrderKeyValue
(
kv
,
order
,
int32
(
order
.
Status
))
kv
=
getCreateOrderKeyValue
(
kv
,
order
,
int32
(
order
.
PreStatus
))
...
...
@@ -197,23 +199,23 @@ func (r *relay) getDeleteOrderKv(OrderId []byte, ty int32) []*types.KeyValue {
}
func
getCreateOrderKeyValue
(
kv
[]
*
types
.
KeyValue
,
order
*
ty
.
RelayOrder
,
status
int32
)
[]
*
types
.
KeyValue
{
OrderId
:=
[]
byte
(
order
.
Id
)
orderID
:=
[]
byte
(
order
.
Id
)
key
:=
calcOrderKeyStatus
(
order
,
status
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
OrderId
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
orderID
})
key
=
calcOrderKeyCoin
(
order
,
status
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
OrderId
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
orderID
})
key
=
calcOrderKeyAddrStatus
(
order
,
status
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
OrderId
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
orderID
})
key
=
calcOrderKeyAddrCoin
(
order
,
status
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
OrderId
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
orderID
})
key
=
calcAcceptKeyAddr
(
order
,
status
)
if
key
!=
nil
{
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
OrderId
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
orderID
})
}
return
kv
...
...
@@ -223,20 +225,20 @@ func getCreateOrderKeyValue(kv []*types.KeyValue, order *ty.RelayOrder, status i
func
deleteCreateOrderKeyValue
(
kv
[]
*
types
.
KeyValue
,
order
*
ty
.
RelayOrder
,
status
int32
)
[]
*
types
.
KeyValue
{
key
:=
calcOrderKeyStatus
(
order
,
status
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
key
=
calcOrderKeyCoin
(
order
,
status
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
key
=
calcOrderKeyAddrStatus
(
order
,
status
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
key
=
calcOrderKeyAddrCoin
(
order
,
status
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
key
=
calcAcceptKeyAddr
(
order
,
status
)
if
key
!=
nil
{
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
}
return
kv
...
...
plugin/dapp/relay/executor/relay_test.go
View file @
7f73d32d
...
...
@@ -30,7 +30,7 @@ type suiteRelay struct {
kvdb
*
mocks
.
KVDB
relay
*
relay
addrRelay
string
orderI
d
string
orderI
D
string
//relayDb *relayDB
}
...
...
@@ -92,7 +92,7 @@ func (s *suiteRelay) testExecLocal(tx *types.Transaction, receipt *types.Receipt
set
,
err
:=
s
.
relay
.
ExecLocal
(
tx
,
rData
,
0
)
s
.
Nil
(
err
)
order
,
_
:=
s
.
relay
.
getSellOrderFromDb
([]
byte
(
s
.
orderI
d
))
order
,
_
:=
s
.
relay
.
getSellOrderFromDb
([]
byte
(
s
.
orderI
D
))
var
kv
[]
*
types
.
KeyValue
kv
=
deleteCreateOrderKeyValue
(
kv
,
order
,
int32
(
order
.
PreStatus
))
kv
=
getCreateOrderKeyValue
(
kv
,
order
,
int32
(
order
.
Status
))
...
...
@@ -109,7 +109,7 @@ func (s *suiteRelay) testExecDelLocal(tx *types.Transaction, receipt *types.Rece
set
,
err
:=
s
.
relay
.
ExecDelLocal
(
tx
,
rData
,
0
)
s
.
Nil
(
err
)
order
,
_
:=
s
.
relay
.
getSellOrderFromDb
([]
byte
(
s
.
orderI
d
))
order
,
_
:=
s
.
relay
.
getSellOrderFromDb
([]
byte
(
s
.
orderI
D
))
var
kv
[]
*
types
.
KeyValue
kv
=
deleteCreateOrderKeyValue
(
kv
,
order
,
int32
(
order
.
Status
))
kv
=
getCreateOrderKeyValue
(
kv
,
order
,
int32
(
order
.
PreStatus
))
...
...
@@ -129,7 +129,7 @@ func (s *suiteRelay) TestExec_1() {
sell
:=
&
ty
.
RelayAction
{
Ty
:
ty
.
RelayActionCreate
,
Value
:
&
ty
.
RelayAction_Create
{
order
},
Value
:
&
ty
.
RelayAction_Create
{
Create
:
order
},
}
tx
:=
&
types
.
Transaction
{}
...
...
@@ -140,7 +140,7 @@ func (s *suiteRelay) TestExec_1() {
tx
.
Sign
(
types
.
SECP256K1
,
privFrom
)
s
.
relay
.
SetEnv
(
10
,
1000
,
1
)
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
10
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
10
)})
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
heightBytes
,
nil
)
.
Once
()
receipt
,
err
:=
s
.
relay
.
Exec
(
tx
,
0
)
...
...
@@ -156,7 +156,7 @@ func (s *suiteRelay) TestExec_1() {
s
.
Equal
(
"200.0000"
,
log
.
TxAmount
)
s
.
Equal
(
uint64
(
10
),
log
.
CoinHeight
)
s
.
orderI
d
=
log
.
OrderId
s
.
orderI
D
=
log
.
OrderId
//s.testExecLocal(tx, receipt)
//s.testExecDelLocal(tx, receipt)
...
...
@@ -166,13 +166,13 @@ func (s *suiteRelay) TestExec_1() {
//accept
func
(
s
*
suiteRelay
)
TestExec_2
()
{
order
:=
&
ty
.
RelayAccept
{
OrderId
:
s
.
orderI
d
,
OrderId
:
s
.
orderI
D
,
CoinAddr
:
addrBtc
,
}
sell
:=
&
ty
.
RelayAction
{
Ty
:
ty
.
RelayActionAccept
,
Value
:
&
ty
.
RelayAction_Accept
{
order
},
Value
:
&
ty
.
RelayAction_Accept
{
Accept
:
order
},
}
tx
:=
&
types
.
Transaction
{}
...
...
@@ -181,7 +181,7 @@ func (s *suiteRelay) TestExec_2() {
tx
.
Sign
(
types
.
SECP256K1
,
privTo
)
s
.
relay
.
SetEnv
(
20
,
2000
,
1
)
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
20
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
20
)})
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
heightBytes
,
nil
)
.
Once
()
receipt
,
err
:=
s
.
relay
.
Exec
(
tx
,
0
)
s
.
Nil
(
err
)
...
...
@@ -203,12 +203,12 @@ func (s *suiteRelay) TestExec_2() {
func
(
s
*
suiteRelay
)
TestExec_3
()
{
order
:=
&
ty
.
RelayConfirmTx
{
OrderId
:
s
.
orderI
d
,
OrderId
:
s
.
orderI
D
,
TxHash
:
"6359f0868171b1d194cbee1af2f16ea598ae8fad666d9b012c8ed2b79a236ec4"
,
}
sell
:=
&
ty
.
RelayAction
{
Ty
:
ty
.
RelayActionConfirmTx
,
Value
:
&
ty
.
RelayAction_ConfirmTx
{
order
},
Value
:
&
ty
.
RelayAction_ConfirmTx
{
ConfirmTx
:
order
},
}
tx
:=
&
types
.
Transaction
{}
...
...
@@ -217,7 +217,7 @@ func (s *suiteRelay) TestExec_3() {
tx
.
Sign
(
types
.
SECP256K1
,
privFrom
)
s
.
relay
.
SetEnv
(
30
,
3000
,
1
)
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
30
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
30
)})
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
heightBytes
,
nil
)
.
Once
()
receipt
,
err
:=
s
.
relay
.
Exec
(
tx
,
0
)
s
.
Nil
(
err
)
...
...
@@ -248,11 +248,11 @@ func (s *suiteRelay) TestExec_4() {
BlockHeight
:
1000
,
Hash
:
"6359f0868171b1d194cbee1af2f16ea598ae8fad666d9b012c8ed2b79a236ec4"
,
}
str
_m
erkleproof
:=
[]
string
{
"e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d"
,
str
M
erkleproof
:=
[]
string
{
"e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d"
,
"ccdafb73d8dcd0173d5d5c3c9a0770d0b3953db889dab99ef05b1907518cb815"
}
proofs
:=
make
([][]
byte
,
len
(
str
_m
erkleproof
))
for
i
,
kk
:=
range
str
_m
erkleproof
{
proofs
:=
make
([][]
byte
,
len
(
str
M
erkleproof
))
for
i
,
kk
:=
range
str
M
erkleproof
{
proofs
[
i
],
_
=
btcHashStrRevers
(
kk
)
}
...
...
@@ -264,7 +264,7 @@ func (s *suiteRelay) TestExec_4() {
Hash
:
"6359f0868171b1d194cbee1af2f16ea598ae8fad666d9b012c8ed2b79a236ec4"
,
}
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
1006
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
1006
)})
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
heightBytes
,
nil
)
.
Once
()
var
head
=
&
ty
.
BtcHeader
{
Version
:
1
,
...
...
@@ -274,13 +274,13 @@ func (s *suiteRelay) TestExec_4() {
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
headEnc
,
nil
)
.
Once
()
order
:=
&
ty
.
RelayVerify
{
OrderId
:
s
.
orderI
d
,
OrderId
:
s
.
orderI
D
,
Tx
:
transaction
,
Spv
:
spv
,
}
sell
:=
&
ty
.
RelayAction
{
Ty
:
ty
.
RelayActionVerifyTx
,
Value
:
&
ty
.
RelayAction_Verify
{
order
},
Value
:
&
ty
.
RelayAction_Verify
{
Verify
:
order
},
}
tx
:=
&
types
.
Transaction
{}
tx
.
To
=
s
.
addrRelay
...
...
@@ -314,7 +314,7 @@ func (s *suiteRelay) TestExec_9_QryStatus1() {
}
var
OrderIds
[][]
byte
OrderIds
=
append
(
OrderIds
,
[]
byte
(
s
.
orderI
d
))
OrderIds
=
append
(
OrderIds
,
[]
byte
(
s
.
orderI
D
))
s
.
kvdb
.
On
(
"List"
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
)
.
Return
(
OrderIds
,
nil
)
.
Once
()
msg
,
err
:=
s
.
relay
.
Query_GetRelayOrderByStatus
(
addrCoins
)
s
.
Nil
(
err
)
...
...
@@ -331,7 +331,7 @@ func (s *suiteRelay) TestExec_9_QryStatus2() {
}
var
OrderIds
[][]
byte
OrderIds
=
append
(
OrderIds
,
[]
byte
(
s
.
orderI
d
))
OrderIds
=
append
(
OrderIds
,
[]
byte
(
s
.
orderI
D
))
s
.
kvdb
.
On
(
"List"
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
)
.
Return
(
OrderIds
,
nil
)
.
Once
()
msg
,
err
:=
s
.
relay
.
Query_GetSellRelayOrder
(
addrCoins
)
s
.
Nil
(
err
)
...
...
@@ -346,7 +346,7 @@ func (s *suiteRelay) TestExec_9_QryStatus3() {
}
var
OrderIds
[][]
byte
OrderIds
=
append
(
OrderIds
,
[]
byte
(
s
.
orderI
d
))
OrderIds
=
append
(
OrderIds
,
[]
byte
(
s
.
orderI
D
))
s
.
kvdb
.
On
(
"List"
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
)
.
Return
(
OrderIds
,
nil
)
.
Once
()
msg
,
err
:=
s
.
relay
.
Query_GetBuyRelayOrder
(
addrCoins
)
s
.
Nil
(
err
)
...
...
@@ -361,7 +361,7 @@ func (s *suiteRelay) TestExec_9_QryStatus4() {
}
var
OrderIds
[][]
byte
OrderIds
=
append
(
OrderIds
,
[]
byte
(
s
.
orderI
d
))
OrderIds
=
append
(
OrderIds
,
[]
byte
(
s
.
orderI
D
))
s
.
kvdb
.
On
(
"List"
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
)
.
Return
(
OrderIds
,
nil
)
.
Once
()
msg
,
err
:=
s
.
relay
.
Query_GetBTCHeaderList
(
addrCoins
)
s
.
Nil
(
err
)
...
...
@@ -374,7 +374,7 @@ func (s *suiteRelay) TestExec_9_QryStatus5() {
BaseHeight
:
10
,
}
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
10
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
10
)})
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
heightBytes
,
nil
)
.
Twice
()
msg
,
err
:=
s
.
relay
.
Query_GetBTCHeaderCurHeight
(
addrCoins
)
s
.
Nil
(
err
)
...
...
@@ -505,7 +505,7 @@ func (s *suiteBtcHeader) TestSaveBtcHead_1() {
sell
:=
&
ty
.
RelayAction
{
Ty
:
ty
.
RelayActionRcvBTCHeaders
,
Value
:
&
ty
.
RelayAction_BtcHeaders
{
headers
},
Value
:
&
ty
.
RelayAction_BtcHeaders
{
BtcHeaders
:
headers
},
}
tx
:=
&
types
.
Transaction
{}
...
...
plugin/dapp/relay/executor/relaybtc.go
View file @
7f73d32d
...
...
@@ -88,19 +88,19 @@ func (b *btcStore) saveBlockHead(head *ty.BtcHeader) ([]*types.KeyValue, error)
relaylog
.
Error
(
"saveBlockHead"
,
"height"
,
head
.
Height
,
"hash"
,
head
.
Hash
)
return
nil
,
err
}
else
{
// hash:header
key
=
calcBtcHeaderKeyHash
(
head
.
Hash
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
val
})
// height:header
key
=
calcBtcHeaderKeyHeight
(
int64
(
head
.
Height
))
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
val
})
}
// hash:header
key
=
calcBtcHeaderKeyHash
(
head
.
Hash
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
val
})
// height:header
key
=
calcBtcHeaderKeyHeight
(
int64
(
head
.
Height
))
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
val
})
// prefix-height:height
key
=
calcBtcHeaderKeyHeightList
(
int64
(
head
.
Height
))
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
head
.
Height
)})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
head
.
Height
)})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
return
kv
,
nil
}
...
...
@@ -108,13 +108,13 @@ func (b *btcStore) saveBlockHead(head *ty.BtcHeader) ([]*types.KeyValue, error)
func
(
b
*
btcStore
)
saveBlockLastHead
(
head
*
ty
.
ReceiptRelayRcvBTCHeaders
)
([]
*
types
.
KeyValue
,
error
)
{
var
kv
[]
*
types
.
KeyValue
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
head
.
NewHeight
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
head
.
NewHeight
)})
key
:=
relayBTCHeaderLastHeight
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
heightBytes
=
types
.
Encode
(
&
types
.
Int64
{
int64
(
head
.
NewBaseHeight
)})
heightBytes
=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
head
.
NewBaseHeight
)})
key
=
relayBTCHeaderBaseHeight
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
return
kv
,
nil
}
...
...
@@ -123,14 +123,14 @@ func (b *btcStore) delBlockHead(head *ty.BtcHeader) ([]*types.KeyValue, error) {
var
kv
[]
*
types
.
KeyValue
key
:=
calcBtcHeaderKeyHash
(
head
.
Hash
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
// height:header
key
=
calcBtcHeaderKeyHeight
(
int64
(
head
.
Height
))
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
// prefix-height:height
key
=
calcBtcHeaderKeyHeightList
(
int64
(
head
.
Height
))
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
return
kv
,
nil
}
...
...
@@ -139,13 +139,13 @@ func (b *btcStore) delBlockLastHead(head *ty.ReceiptRelayRcvBTCHeaders) ([]*type
var
kv
[]
*
types
.
KeyValue
var
key
[]
byte
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
head
.
LastHeight
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
head
.
LastHeight
)})
key
=
relayBTCHeaderLastHeight
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
heightBytes
=
types
.
Encode
(
&
types
.
Int64
{
int64
(
head
.
LastBaseHeight
)})
heightBytes
=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
head
.
LastBaseHeight
)})
key
=
relayBTCHeaderBaseHeight
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
return
kv
,
nil
}
...
...
plugin/dapp/relay/executor/relaybtc_test.go
View file @
7f73d32d
...
...
@@ -34,14 +34,14 @@ func (s *suiteBtcStore) SetupSuite() {
}
func
(
s
*
suiteBtcStore
)
TestGetBtcHeadHeightFromDb
()
{
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
10
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
10
)})
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
heightBytes
,
nil
)
.
Once
()
val
,
_
:=
s
.
btc
.
getBtcHeadHeightFromDb
([]
byte
(
"key"
))
s
.
Assert
()
.
Equal
(
val
,
int64
(
10
))
}
func
(
s
*
suiteBtcStore
)
TestGetLastBtcHeadHeight
()
{
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
10
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
10
)})
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
heightBytes
,
nil
)
.
Once
()
val
,
_
:=
s
.
btc
.
getLastBtcHeadHeight
()
s
.
Assert
()
.
Equal
(
val
,
int64
(
10
))
...
...
@@ -58,7 +58,7 @@ func (s *suiteBtcStore) TestGetBtcHeadByHeight() {
}
func
(
s
*
suiteBtcStore
)
TestGetLastBtcHead
()
{
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
10
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
10
)})
head
:=
&
ty
.
BtcHeader
{}
header
:=
types
.
Encode
(
head
)
...
...
@@ -82,12 +82,12 @@ func (s *suiteBtcStore) TestSaveBlockHead() {
}
val
,
_
:=
proto
.
Marshal
(
head
)
key
:=
calcBtcHeaderKeyHash
(
head
.
Hash
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
val
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
val
})
key
=
calcBtcHeaderKeyHeight
(
int64
(
head
.
Height
))
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
val
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
val
})
key
=
calcBtcHeaderKeyHeightList
(
int64
(
head
.
Height
))
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
head
.
Height
)})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
head
.
Height
)})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
res
,
err
:=
s
.
btc
.
saveBlockHead
(
head
)
s
.
Nil
(
err
)
...
...
@@ -104,13 +104,13 @@ func (s *suiteBtcStore) TestSaveBlockLastHead() {
NewBaseHeight
:
150
,
}
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
lastHead
.
NewHeight
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
lastHead
.
NewHeight
)})
key
:=
relayBTCHeaderLastHeight
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
heightBytes
=
types
.
Encode
(
&
types
.
Int64
{
int64
(
lastHead
.
NewBaseHeight
)})
heightBytes
=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
lastHead
.
NewBaseHeight
)})
key
=
relayBTCHeaderBaseHeight
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
res
,
err
:=
s
.
btc
.
saveBlockLastHead
(
lastHead
)
s
.
Nil
(
err
)
...
...
@@ -131,14 +131,14 @@ func (s *suiteBtcStore) TestDelBlockHead() {
}
key
:=
calcBtcHeaderKeyHash
(
head
.
Hash
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
// height:header
key
=
calcBtcHeaderKeyHeight
(
int64
(
head
.
Height
))
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
// prefix-height:height
key
=
calcBtcHeaderKeyHeightList
(
int64
(
head
.
Height
))
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
nil
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
})
res
,
err
:=
s
.
btc
.
delBlockHead
(
head
)
s
.
Nil
(
err
)
...
...
@@ -155,13 +155,13 @@ func (s *suiteBtcStore) TestDelBlockLastHead() {
NewBaseHeight
:
150
,
}
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
lastHead
.
LastHeight
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
lastHead
.
LastHeight
)})
key
:=
relayBTCHeaderLastHeight
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
heightBytes
=
types
.
Encode
(
&
types
.
Int64
{
int64
(
lastHead
.
LastBaseHeight
)})
heightBytes
=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
lastHead
.
LastBaseHeight
)})
key
=
relayBTCHeaderBaseHeight
kv
=
append
(
kv
,
&
types
.
KeyValue
{
key
,
heightBytes
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
heightBytes
})
res
,
err
:=
s
.
btc
.
delBlockLastHead
(
lastHead
)
s
.
Nil
(
err
)
...
...
@@ -173,7 +173,7 @@ func (s *suiteBtcStore) TestGetBtcCurHeight() {
rep
,
err
:=
s
.
btc
.
getBtcCurHeight
(
nil
)
s
.
Nil
(
err
)
s
.
Equal
(
rep
,
&
ty
.
ReplayRelayQryBTCHeadHeight
{
-
1
,
-
1
})
s
.
Equal
(
rep
,
&
ty
.
ReplayRelayQryBTCHeadHeight
{
CurHeight
:
-
1
,
BaseHeight
:
-
1
})
}
func
(
s
*
suiteBtcStore
)
TestGetMerkleRootFromHeader
()
{
...
...
@@ -188,8 +188,8 @@ func (s *suiteBtcStore) TestGetMerkleRootFromHeader() {
Height
:
2
,
}
head
_e
nc
:=
types
.
Encode
(
head
)
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
head
_e
nc
,
nil
)
.
Once
()
head
E
nc
:=
types
.
Encode
(
head
)
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
head
E
nc
,
nil
)
.
Once
()
res
,
err
:=
s
.
btc
.
getMerkleRootFromHeader
(
head
.
Hash
)
s
.
Nil
(
err
)
s
.
Equal
(
head
.
MerkleRoot
,
res
)
...
...
@@ -221,11 +221,11 @@ func (s *suiteBtcStore) TestVerifyBtcTx() {
// "6359f0868171b1d194cbee1af2f16ea598ae8fad666d9b012c8ed2b79a236ec4",
// "e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d"}
//the 3rd tx's branch
str
_m
erkleproof
:=
[]
string
{
"e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d"
,
str
M
erkleproof
:=
[]
string
{
"e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d"
,
"ccdafb73d8dcd0173d5d5c3c9a0770d0b3953db889dab99ef05b1907518cb815"
}
proofs
:=
make
([][]
byte
,
len
(
str
_m
erkleproof
))
for
i
,
kk
:=
range
str
_m
erkleproof
{
proofs
:=
make
([][]
byte
,
len
(
str
M
erkleproof
))
for
i
,
kk
:=
range
str
M
erkleproof
{
proofs
[
i
],
_
=
btcHashStrRevers
(
kk
)
}
...
...
@@ -241,7 +241,7 @@ func (s *suiteBtcStore) TestVerifyBtcTx() {
Spv
:
spv
,
}
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
int64
(
1006
)})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
int64
(
1006
)})
s
.
kvdb
.
On
(
"Get"
,
mock
.
Anything
)
.
Return
(
heightBytes
,
nil
)
.
Once
()
var
head
=
&
ty
.
BtcHeader
{
Version
:
1
,
...
...
@@ -290,7 +290,7 @@ func (s *suiteBtcStore) TestGetHeadHeightList() {
heightArry
:=
make
([][]
byte
,
10
)
for
i
:=
0
;
i
<
10
;
i
++
{
height
:=
int64
(
1000
+
i
)
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
height
})
heightBytes
:=
types
.
Encode
(
&
types
.
Int64
{
Data
:
height
})
heightArry
[
i
]
=
heightBytes
replay
.
Heights
=
append
(
replay
.
Heights
,
height
)
}
...
...
plugin/dapp/relay/executor/relaydb.go
View file @
7f73d32d
...
...
@@ -43,11 +43,11 @@ func (r *relayLog) save(db dbm.KV) []*types.KeyValue {
func
(
r
*
relayLog
)
getKVSet
()
(
kvSet
[]
*
types
.
KeyValue
)
{
value
:=
types
.
Encode
(
&
r
.
RelayOrder
)
key
:=
[]
byte
(
r
.
Id
)
kvSet
=
append
(
kvSet
,
&
types
.
KeyValue
{
key
,
value
})
kvSet
=
append
(
kvSet
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
value
})
if
r
.
CoinTxHash
!=
""
{
key
=
[]
byte
(
calcCoinHash
(
r
.
CoinTxHash
))
kvSet
=
append
(
kvSet
,
&
types
.
KeyValue
{
key
,
value
})
kvSet
=
append
(
kvSet
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
value
})
}
return
kvSet
...
...
@@ -100,8 +100,8 @@ func newRelayDB(r *relay, tx *types.Transaction) *relayDB {
fromAddr
,
r
.
GetBlockTime
(),
r
.
GetHeight
(),
dapp
.
ExecAddress
(
r
.
GetName
()),
btc
}
}
func
(
action
*
relayDB
)
getOrderByID
(
orderI
d
[]
byte
)
(
*
ty
.
RelayOrder
,
error
)
{
value
,
err
:=
action
.
db
.
Get
(
orderI
d
)
func
(
action
*
relayDB
)
getOrderByID
(
orderI
D
[]
byte
)
(
*
ty
.
RelayOrder
,
error
)
{
value
,
err
:=
action
.
db
.
Get
(
orderI
D
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -179,7 +179,7 @@ func (action *relayDB) create(order *ty.RelayCreate) (*types.Receipt, error) {
logs
=
append
(
logs
,
relayLog
.
receiptLog
(
ty
.
TyLogRelayCreate
))
kv
=
append
(
kv
,
sellOrderKV
...
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
action
*
relayDB
)
checkRevokeOrder
(
order
*
ty
.
RelayOrder
)
error
{
...
...
@@ -216,8 +216,8 @@ func (action *relayDB) checkRevokeOrder(order *ty.RelayOrder) error {
}
func
(
action
*
relayDB
)
revokeCreate
(
revoke
*
ty
.
RelayRevoke
)
(
*
types
.
Receipt
,
error
)
{
orderI
d
:=
[]
byte
(
revoke
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
d
)
orderI
D
:=
[]
byte
(
revoke
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
D
)
if
err
!=
nil
{
return
nil
,
ty
.
ErrRelayOrderNotExist
}
...
...
@@ -290,12 +290,12 @@ func (action *relayDB) revokeCreate(revoke *ty.RelayRevoke) (*types.Receipt, err
}
logs
=
append
(
logs
,
relayLog
.
receiptLog
(
ty
.
TyLogRelayRevokeCreate
))
kv
=
append
(
kv
,
orderKV
...
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
action
*
relayDB
)
accept
(
accept
*
ty
.
RelayAccept
)
(
*
types
.
Receipt
,
error
)
{
orderI
d
:=
[]
byte
(
accept
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
d
)
orderI
D
:=
[]
byte
(
accept
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
D
)
if
err
!=
nil
{
return
nil
,
ty
.
ErrRelayOrderNotExist
}
...
...
@@ -355,7 +355,7 @@ func (action *relayDB) accept(accept *ty.RelayAccept) (*types.Receipt, error) {
logs
=
append
(
logs
,
relayLog
.
receiptLog
(
ty
.
TyLogRelayAccept
))
kv
=
append
(
kv
,
sellOrderKV
...
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
...
...
@@ -368,8 +368,8 @@ func (action *relayDB) relayRevoke(revoke *ty.RelayRevoke) (*types.Receipt, erro
}
func
(
action
*
relayDB
)
revokeAccept
(
revoke
*
ty
.
RelayRevoke
)
(
*
types
.
Receipt
,
error
)
{
orderI
d
Byte
:=
[]
byte
(
revoke
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
d
Byte
)
orderI
D
Byte
:=
[]
byte
(
revoke
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
D
Byte
)
if
err
!=
nil
{
return
nil
,
ty
.
ErrRelayOrderNotExist
}
...
...
@@ -429,12 +429,12 @@ func (action *relayDB) revokeAccept(revoke *ty.RelayRevoke) (*types.Receipt, err
logs
=
append
(
logs
,
relayLog
.
receiptLog
(
ty
.
TyLogRelayRevokeAccept
))
kv
=
append
(
kv
,
sellOrderKV
...
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
action
*
relayDB
)
confirmTx
(
confirm
*
ty
.
RelayConfirmTx
)
(
*
types
.
Receipt
,
error
)
{
orderI
d
:=
[]
byte
(
confirm
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
d
)
orderI
D
:=
[]
byte
(
confirm
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
D
)
if
err
!=
nil
{
return
nil
,
ty
.
ErrRelayOrderNotExist
}
...
...
@@ -449,7 +449,7 @@ func (action *relayDB) confirmTx(confirm *ty.RelayConfirmTx) (*types.Receipt, er
return
nil
,
ty
.
ErrRelayOrderRevoked
}
//report Error if coinTxHash has been used and not same orderI
d, if same orderId
, means to modify the txHash
//report Error if coinTxHash has been used and not same orderI
D, if same orderID
, means to modify the txHash
coinTxOrder
,
_
:=
action
.
getOrderByCoinHash
([]
byte
(
calcCoinHash
(
confirm
.
TxHash
)))
if
coinTxOrder
!=
nil
{
if
coinTxOrder
.
Id
!=
confirm
.
OrderId
{
...
...
@@ -487,14 +487,14 @@ func (action *relayDB) confirmTx(confirm *ty.RelayConfirmTx) (*types.Receipt, er
logs
=
append
(
logs
,
relayLog
.
receiptLog
(
ty
.
TyLogRelayConfirmTx
))
kv
=
append
(
kv
,
sellOrderKV
...
)
receipt
:=
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
}
receipt
:=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
}
return
receipt
,
nil
}
func
(
action
*
relayDB
)
verifyTx
(
verify
*
ty
.
RelayVerify
)
(
*
types
.
Receipt
,
error
)
{
orderI
d
:=
[]
byte
(
verify
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
d
)
orderI
D
:=
[]
byte
(
verify
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
D
)
if
err
!=
nil
{
return
nil
,
ty
.
ErrRelayOrderNotExist
}
...
...
@@ -562,13 +562,13 @@ func (action *relayDB) verifyTx(verify *ty.RelayVerify) (*types.Receipt, error)
kv
=
append
(
kv
,
receipt
.
KV
...
)
kv
=
append
(
kv
,
receiptTransfer
.
KV
...
)
kv
=
append
(
kv
,
orderKV
...
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
action
*
relayDB
)
verifyCmdTx
(
verify
*
ty
.
RelayVerifyCli
)
(
*
types
.
Receipt
,
error
)
{
orderI
d
:=
[]
byte
(
verify
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
d
)
orderI
D
:=
[]
byte
(
verify
.
OrderId
)
order
,
err
:=
action
.
getOrderByID
(
orderI
D
)
if
err
!=
nil
{
return
nil
,
ty
.
ErrRelayOrderNotExist
}
...
...
@@ -637,7 +637,7 @@ func (action *relayDB) verifyCmdTx(verify *ty.RelayVerifyCli) (*types.Receipt, e
kv
=
append
(
kv
,
receipt
.
KV
...
)
kv
=
append
(
kv
,
receiptTransfer
.
KV
...
)
kv
=
append
(
kv
,
orderKV
...
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
...
...
@@ -648,7 +648,7 @@ func saveBtcLastHead(db dbm.KV, head *ty.RelayLastRcvBtcHeader) (set []*types.Ke
value
:=
types
.
Encode
(
head
)
key
:=
[]
byte
(
btcLastHead
)
set
=
append
(
set
,
&
types
.
KeyValue
{
key
,
value
})
set
=
append
(
set
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
value
})
for
i
:=
0
;
i
<
len
(
set
);
i
++
{
db
.
Set
(
set
[
i
]
.
GetKey
(),
set
[
i
]
.
Value
)
...
...
@@ -714,5 +714,5 @@ func (action *relayDB) saveBtcHeader(headers *ty.BtcHeaders, localDb dbm.KVDB) (
log
.
Log
=
types
.
Encode
(
receipt
)
logs
=
append
(
logs
,
log
)
kv
=
saveBtcLastHead
(
action
.
db
,
preHead
)
return
&
types
.
Receipt
{
types
.
ExecOk
,
kv
,
logs
},
nil
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
plugin/dapp/relay/executor/relaydb_test.go
View file @
7f73d32d
This diff is collapsed.
Click to expand it.
plugin/dapp/relay/rpc/rpc.go
View file @
7f73d32d
...
...
@@ -11,7 +11,7 @@ import (
ty
"github.com/33cn/plugin/plugin/dapp/relay/types"
)
func
C
reateRawRelayOrderTx
(
parm
*
ty
.
RelayCreate
)
([]
byte
,
error
)
{
func
c
reateRawRelayOrderTx
(
parm
*
ty
.
RelayCreate
)
([]
byte
,
error
)
{
if
parm
==
nil
{
return
nil
,
types
.
ErrInvalidParam
}
...
...
@@ -19,21 +19,21 @@ func CreateRawRelayOrderTx(parm *ty.RelayCreate) ([]byte, error) {
return
types
.
CallCreateTx
(
types
.
ExecName
(
ty
.
RelayX
),
"Create"
,
&
v
)
}
func
C
reateRawRelayAcceptTx
(
parm
*
ty
.
RelayAccept
)
([]
byte
,
error
)
{
func
c
reateRawRelayAcceptTx
(
parm
*
ty
.
RelayAccept
)
([]
byte
,
error
)
{
if
parm
==
nil
{
return
nil
,
types
.
ErrInvalidParam
}
return
types
.
CallCreateTx
(
types
.
ExecName
(
ty
.
RelayX
),
"Accept"
,
parm
)
}
func
C
reateRawRelayRevokeTx
(
parm
*
ty
.
RelayRevoke
)
([]
byte
,
error
)
{
func
c
reateRawRelayRevokeTx
(
parm
*
ty
.
RelayRevoke
)
([]
byte
,
error
)
{
if
parm
==
nil
{
return
nil
,
types
.
ErrInvalidParam
}
return
types
.
CallCreateTx
(
types
.
ExecName
(
ty
.
RelayX
),
"Revoke"
,
parm
)
}
func
C
reateRawRelayConfirmTx
(
parm
*
ty
.
RelayConfirmTx
)
([]
byte
,
error
)
{
func
c
reateRawRelayConfirmTx
(
parm
*
ty
.
RelayConfirmTx
)
([]
byte
,
error
)
{
if
parm
==
nil
{
return
nil
,
types
.
ErrInvalidParam
}
...
...
@@ -41,7 +41,7 @@ func CreateRawRelayConfirmTx(parm *ty.RelayConfirmTx) ([]byte, error) {
return
types
.
CallCreateTx
(
types
.
ExecName
(
ty
.
RelayX
),
"ConfirmTx"
,
parm
)
}
func
C
reateRawRelayVerifyBTCTx
(
parm
*
ty
.
RelayVerifyCli
)
([]
byte
,
error
)
{
func
c
reateRawRelayVerifyBTCTx
(
parm
*
ty
.
RelayVerifyCli
)
([]
byte
,
error
)
{
if
parm
==
nil
{
return
nil
,
types
.
ErrInvalidParam
}
...
...
@@ -49,7 +49,7 @@ func CreateRawRelayVerifyBTCTx(parm *ty.RelayVerifyCli) ([]byte, error) {
return
types
.
CallCreateTx
(
types
.
ExecName
(
ty
.
RelayX
),
"VerifyCli"
,
&
v
)
}
func
C
reateRawRelaySaveBTCHeadTx
(
parm
*
ty
.
BtcHeader
)
([]
byte
,
error
)
{
func
c
reateRawRelaySaveBTCHeadTx
(
parm
*
ty
.
BtcHeader
)
([]
byte
,
error
)
{
if
parm
==
nil
{
return
nil
,
types
.
ErrInvalidParam
}
...
...
@@ -66,8 +66,8 @@ func CreateRawRelaySaveBTCHeadTx(parm *ty.BtcHeader) ([]byte, error) {
return
types
.
CallCreateTx
(
types
.
ExecName
(
ty
.
RelayX
),
"BtcHeaders"
,
v
)
}
func
(
c
*
J
rpc
)
CreateRawRelayOrderTx
(
in
*
ty
.
RelayCreate
,
result
*
interface
{})
error
{
reply
,
err
:=
C
reateRawRelayOrderTx
(
in
)
func
(
c
*
j
rpc
)
CreateRawRelayOrderTx
(
in
*
ty
.
RelayCreate
,
result
*
interface
{})
error
{
reply
,
err
:=
c
reateRawRelayOrderTx
(
in
)
if
err
!=
nil
{
return
err
}
...
...
@@ -75,8 +75,8 @@ func (c *Jrpc) CreateRawRelayOrderTx(in *ty.RelayCreate, result *interface{}) er
return
nil
}
func
(
c
*
J
rpc
)
CreateRawRelayAcceptTx
(
in
*
ty
.
RelayAccept
,
result
*
interface
{})
error
{
reply
,
err
:=
C
reateRawRelayAcceptTx
(
in
)
func
(
c
*
j
rpc
)
CreateRawRelayAcceptTx
(
in
*
ty
.
RelayAccept
,
result
*
interface
{})
error
{
reply
,
err
:=
c
reateRawRelayAcceptTx
(
in
)
if
err
!=
nil
{
return
err
}
...
...
@@ -85,8 +85,8 @@ func (c *Jrpc) CreateRawRelayAcceptTx(in *ty.RelayAccept, result *interface{}) e
return
nil
}
func
(
c
*
J
rpc
)
CreateRawRelayRevokeTx
(
in
*
ty
.
RelayRevoke
,
result
*
interface
{})
error
{
reply
,
err
:=
C
reateRawRelayRevokeTx
(
in
)
func
(
c
*
j
rpc
)
CreateRawRelayRevokeTx
(
in
*
ty
.
RelayRevoke
,
result
*
interface
{})
error
{
reply
,
err
:=
c
reateRawRelayRevokeTx
(
in
)
if
err
!=
nil
{
return
err
}
...
...
@@ -95,8 +95,8 @@ func (c *Jrpc) CreateRawRelayRevokeTx(in *ty.RelayRevoke, result *interface{}) e
return
nil
}
func
(
c
*
J
rpc
)
CreateRawRelayConfirmTx
(
in
*
ty
.
RelayConfirmTx
,
result
*
interface
{})
error
{
reply
,
err
:=
C
reateRawRelayConfirmTx
(
in
)
func
(
c
*
j
rpc
)
CreateRawRelayConfirmTx
(
in
*
ty
.
RelayConfirmTx
,
result
*
interface
{})
error
{
reply
,
err
:=
c
reateRawRelayConfirmTx
(
in
)
if
err
!=
nil
{
return
err
}
...
...
@@ -105,8 +105,8 @@ func (c *Jrpc) CreateRawRelayConfirmTx(in *ty.RelayConfirmTx, result *interface{
return
nil
}
func
(
c
*
J
rpc
)
CreateRawRelayVerifyBTCTx
(
in
*
ty
.
RelayVerifyCli
,
result
*
interface
{})
error
{
reply
,
err
:=
C
reateRawRelayVerifyBTCTx
(
in
)
func
(
c
*
j
rpc
)
CreateRawRelayVerifyBTCTx
(
in
*
ty
.
RelayVerifyCli
,
result
*
interface
{})
error
{
reply
,
err
:=
c
reateRawRelayVerifyBTCTx
(
in
)
if
err
!=
nil
{
return
err
}
...
...
@@ -114,8 +114,8 @@ func (c *Jrpc) CreateRawRelayVerifyBTCTx(in *ty.RelayVerifyCli, result *interfac
return
nil
}
func
(
c
*
J
rpc
)
CreateRawRelaySaveBTCHeadTx
(
in
*
ty
.
BtcHeader
,
result
*
interface
{})
error
{
reply
,
err
:=
C
reateRawRelaySaveBTCHeadTx
(
in
)
func
(
c
*
j
rpc
)
CreateRawRelaySaveBTCHeadTx
(
in
*
ty
.
BtcHeader
,
result
*
interface
{})
error
{
reply
,
err
:=
c
reateRawRelaySaveBTCHeadTx
(
in
)
if
err
!=
nil
{
return
err
}
...
...
plugin/dapp/relay/rpc/rpc_test.go
View file @
7f73d32d
...
...
@@ -16,6 +16,6 @@ func newTestChannelClient() *channelClient {
}
}
func
newTestJrpcClient
()
*
J
rpc
{
return
&
J
rpc
{
cli
:
newTestChannelClient
()}
func
newTestJrpcClient
()
*
j
rpc
{
return
&
j
rpc
{
cli
:
newTestChannelClient
()}
}
plugin/dapp/relay/rpc/types.go
View file @
7f73d32d
...
...
@@ -8,11 +8,11 @@ import (
"github.com/33cn/chain33/rpc/types"
)
type
J
rpc
struct
{
type
j
rpc
struct
{
cli
*
channelClient
}
type
G
rpc
struct
{
type
g
rpc
struct
{
*
channelClient
}
...
...
@@ -20,8 +20,9 @@ type channelClient struct {
types
.
ChannelClient
}
// Init relay rpc register
func
Init
(
name
string
,
s
types
.
RPCServer
)
{
cli
:=
&
channelClient
{}
grpc
:=
&
G
rpc
{
channelClient
:
cli
}
cli
.
Init
(
name
,
s
,
&
J
rpc
{
cli
:
cli
},
grpc
)
grpc
:=
&
g
rpc
{
channelClient
:
cli
}
cli
.
Init
(
name
,
s
,
&
j
rpc
{
cli
:
cli
},
grpc
)
}
plugin/dapp/relay/types/errors.go
View file @
7f73d32d
...
...
@@ -7,23 +7,40 @@ package types
import
"errors"
var
(
ErrRelayBalanceNotEnough
=
errors
.
New
(
"ErrRelaySellBalanceNotEnough"
)
// ErrRelayOrderNotExist relay order not exist
ErrRelayOrderNotExist
=
errors
.
New
(
"ErrRelayOrderNotExist"
)
// ErrRelayOrderOnSell relay order on sell status
ErrRelayOrderOnSell
=
errors
.
New
(
"ErrRelayOrderOnSell"
)
// ErrRelayOrderStatusErr relay order status err
ErrRelayOrderStatusErr
=
errors
.
New
(
"ErrRelayOrderStatusErr"
)
// ErrRelayOrderParamErr relay order parameter err
ErrRelayOrderParamErr
=
errors
.
New
(
"ErrRelayOrderParamErr"
)
// ErrRelayOrderSoldout order has been sold
ErrRelayOrderSoldout
=
errors
.
New
(
"ErrRelayOrderSoldout"
)
// ErrRelayOrderRevoked order revoked
ErrRelayOrderRevoked
=
errors
.
New
(
"ErrRelayOrderRevoked"
)
// ErrRelayOrderConfirming order is confirming, not time out
ErrRelayOrderConfirming
=
errors
.
New
(
"ErrRelayOrderConfirming"
)
// ErrRelayOrderFinished order has finished
ErrRelayOrderFinished
=
errors
.
New
(
"ErrRelayOrderFinished"
)
// ErrRelayReturnAddr relay order return addr error
ErrRelayReturnAddr
=
errors
.
New
(
"ErrRelayReturnAddr"
)
// ErrRelayVerify order is verifying
ErrRelayVerify
=
errors
.
New
(
"ErrRelayVerify"
)
// ErrRelayVerifyAddrNotFound order verify addr not found
ErrRelayVerifyAddrNotFound
=
errors
.
New
(
"ErrRelayVerifyAddrNotFound"
)
// ErrRelayWaitBlocksErr order wait block not enough
ErrRelayWaitBlocksErr
=
errors
.
New
(
"ErrRelayWaitBlocks"
)
// ErrRelayCoinTxHashUsed order confirm tx has been used
ErrRelayCoinTxHashUsed
=
errors
.
New
(
"ErrRelayCoinTxHashUsed"
)
// ErrRelayBtcTxTimeErr btc tx time not reasonable
ErrRelayBtcTxTimeErr
=
errors
.
New
(
"ErrRelayBtcTxTimeErr"
)
// ErrRelayBtcHeadSequenceErr btc header sequence not continuous
ErrRelayBtcHeadSequenceErr
=
errors
.
New
(
"ErrRelayBtcHeadSequenceErr"
)
// ErrRelayBtcHeadHashErr btc header hash not correct
ErrRelayBtcHeadHashErr
=
errors
.
New
(
"ErrRelayBtcHeadHashErr"
)
// ErrRelayBtcHeadBitsErr rcv btc header bit not correct
ErrRelayBtcHeadBitsErr
=
errors
.
New
(
"ErrRelayBtcHeadBitsErr"
)
// ErrRelayBtcHeadNewBitsErr calc btc header new bits error
ErrRelayBtcHeadNewBitsErr
=
errors
.
New
(
"ErrRelayBtcHeadNewBitsErr"
)
)
plugin/dapp/relay/types/relay.go
View file @
7f73d32d
...
...
@@ -12,6 +12,7 @@ import (
"github.com/33cn/chain33/types"
)
// RelayX name for executor
var
RelayX
=
"relay"
//var tlog = log.New("module", name)
...
...
@@ -28,22 +29,29 @@ const (
// relay
const
(
// RelayRevokeCreate revoke created order
RelayRevokeCreate
=
iota
// RelayRevokeAccept revoke accept order
RelayRevokeAccept
)
const
(
RelayOrderBuy
=
iota
// RelayOrderBuy define relay buy order
RelayOrderBuy
=
iota
// RelayOrderSell define relay sell order
RelayOrderSell
)
// RelayOrderOperation buy or sell operation
var
RelayOrderOperation
=
map
[
uint32
]
string
{
RelayOrderBuy
:
"buy"
,
RelayOrderSell
:
"sell"
,
}
const
(
// RelayUnlock revoke order
RelayUnlock
=
iota
// RelayCancel order owner cancel order
RelayCancel
)
...
...
@@ -53,25 +61,30 @@ func init() {
types
.
RegisterDappFork
(
RelayX
,
"Enable"
,
570000
)
}
// NewType new relay type
func
NewType
()
*
RelayType
{
c
:=
&
RelayType
{}
c
.
SetChild
(
c
)
return
c
}
func
(
at
*
RelayType
)
GetPayload
()
types
.
Message
{
// GetPayload return relay action msg
func
(
r
*
RelayType
)
GetPayload
()
types
.
Message
{
return
&
RelayAction
{}
}
// RelayType relay exec type
type
RelayType
struct
{
types
.
ExecTypeBase
}
func
(
b
*
RelayType
)
GetName
()
string
{
// GetName return relay name
func
(
r
*
RelayType
)
GetName
()
string
{
return
RelayX
}
func
(
t
*
RelayType
)
GetLogMap
()
map
[
int64
]
*
types
.
LogInfo
{
// GetLogMap return receipt log map function
func
(
r
*
RelayType
)
GetLogMap
()
map
[
int64
]
*
types
.
LogInfo
{
return
map
[
int64
]
*
types
.
LogInfo
{
TyLogRelayCreate
:
{
reflect
.
TypeOf
(
ReceiptRelayLog
{}),
"LogRelayCreate"
},
TyLogRelayRevokeCreate
:
{
reflect
.
TypeOf
(
ReceiptRelayLog
{}),
"LogRelayRevokeCreate"
},
...
...
@@ -84,16 +97,24 @@ func (t *RelayType) GetLogMap() map[int64]*types.LogInfo {
}
const
(
RelayActionCreate
=
iota
// RelayActionCreate relay create order action
RelayActionCreate
=
iota
// RelayActionAccept accept order action
RelayActionAccept
// RelayActionRevoke revoke order action
RelayActionRevoke
// RelayActionConfirmTx confirm tx action
RelayActionConfirmTx
// RelayActionVerifyTx relayd send this tx to verify btc tx
RelayActionVerifyTx
// RelayActionVerifyCmdTx verify tx by cli action
RelayActionVerifyCmdTx
// RelayActionRcvBTCHeaders relay rcv BTC headers by this
RelayActionRcvBTCHeaders
)
func
(
t
*
RelayType
)
GetTypeMap
()
map
[
string
]
int32
{
// GetTypeMap get relay action type map
func
(
r
*
RelayType
)
GetTypeMap
()
map
[
string
]
int32
{
return
map
[
string
]
int32
{
"Create"
:
RelayActionCreate
,
"Accept"
:
RelayActionAccept
,
...
...
@@ -105,6 +126,7 @@ func (t *RelayType) GetTypeMap() map[string]int32 {
}
}
// ActionName return action name
func
(
r
RelayType
)
ActionName
(
tx
*
types
.
Transaction
)
string
{
var
relay
RelayAction
err
:=
types
.
Decode
(
tx
.
Payload
,
&
relay
)
...
...
@@ -132,6 +154,7 @@ func (r RelayType) ActionName(tx *types.Transaction) string {
return
"unknown"
}
// Amount return relay create bty amount
func
(
r
*
RelayType
)
Amount
(
tx
*
types
.
Transaction
)
(
int64
,
error
)
{
data
,
err
:=
r
.
DecodePayload
(
tx
)
if
err
!=
nil
{
...
...
@@ -144,120 +167,9 @@ func (r *RelayType) Amount(tx *types.Transaction) (int64, error) {
return
0
,
nil
}
// TODO 暂时不修改实现, 先完成结构的重构
// CreateTx relay create tx TODO 暂时不修改实现, 先完成结构的重构
func
(
r
*
RelayType
)
CreateTx
(
action
string
,
message
json
.
RawMessage
)
(
*
types
.
Transaction
,
error
)
{
var
tx
*
types
.
Transaction
return
tx
,
nil
}
type
RelayCreateLog
struct
{
}
func
(
l
RelayCreateLog
)
Name
()
string
{
return
"LogRelayCreate"
}
func
(
l
RelayCreateLog
)
Decode
(
msg
[]
byte
)
(
interface
{},
error
)
{
var
logTmp
ReceiptRelayLog
err
:=
types
.
Decode
(
msg
,
&
logTmp
)
if
err
!=
nil
{
return
nil
,
err
}
return
logTmp
,
err
}
type
RelayRevokeCreateLog
struct
{
}
func
(
l
RelayRevokeCreateLog
)
Name
()
string
{
return
"LogRelayRevokeCreate"
}
func
(
l
RelayRevokeCreateLog
)
Decode
(
msg
[]
byte
)
(
interface
{},
error
)
{
var
logTmp
ReceiptRelayLog
err
:=
types
.
Decode
(
msg
,
&
logTmp
)
if
err
!=
nil
{
return
nil
,
err
}
return
logTmp
,
err
}
type
RelayAcceptLog
struct
{
}
func
(
l
RelayAcceptLog
)
Name
()
string
{
return
"LogRelayAccept"
}
func
(
l
RelayAcceptLog
)
Decode
(
msg
[]
byte
)
(
interface
{},
error
)
{
var
logTmp
ReceiptRelayLog
err
:=
types
.
Decode
(
msg
,
&
logTmp
)
if
err
!=
nil
{
return
nil
,
err
}
return
logTmp
,
err
}
type
RelayRevokeAcceptLog
struct
{
}
func
(
l
RelayRevokeAcceptLog
)
Name
()
string
{
return
"LogRelayRevokeAccept"
}
func
(
l
RelayRevokeAcceptLog
)
Decode
(
msg
[]
byte
)
(
interface
{},
error
)
{
var
logTmp
ReceiptRelayLog
err
:=
types
.
Decode
(
msg
,
&
logTmp
)
if
err
!=
nil
{
return
nil
,
err
}
return
logTmp
,
err
}
type
RelayConfirmTxLog
struct
{
}
func
(
l
RelayConfirmTxLog
)
Name
()
string
{
return
"LogRelayConfirmTx"
}
func
(
l
RelayConfirmTxLog
)
Decode
(
msg
[]
byte
)
(
interface
{},
error
)
{
var
logTmp
ReceiptRelayLog
err
:=
types
.
Decode
(
msg
,
&
logTmp
)
if
err
!=
nil
{
return
nil
,
err
}
return
logTmp
,
err
}
type
RelayFinishTxLog
struct
{
}
func
(
l
RelayFinishTxLog
)
Name
()
string
{
return
"LogRelayFinishTx"
}
func
(
l
RelayFinishTxLog
)
Decode
(
msg
[]
byte
)
(
interface
{},
error
)
{
var
logTmp
ReceiptRelayLog
err
:=
types
.
Decode
(
msg
,
&
logTmp
)
if
err
!=
nil
{
return
nil
,
err
}
return
logTmp
,
err
}
type
RelayRcvBTCHeadLog
struct
{
}
func
(
l
RelayRcvBTCHeadLog
)
Name
()
string
{
return
"LogRelayRcvBTCHead"
}
func
(
l
RelayRcvBTCHeadLog
)
Decode
(
msg
[]
byte
)
(
interface
{},
error
)
{
var
logTmp
ReceiptRelayRcvBTCHeaders
err
:=
types
.
Decode
(
msg
,
&
logTmp
)
if
err
!=
nil
{
return
nil
,
err
}
return
logTmp
,
err
}
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