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
de15b6e6
Commit
de15b6e6
authored
Nov 11, 2021
by
hezhengjun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add test file
parent
c1cd62b7
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
87 additions
and
2 deletions
+87
-2
query_test.go
plugin/dapp/evm/executor/query_test.go
+85
-0
evmxgodb.go
plugin/dapp/evmxgo/executor/evmxgodb.go
+1
-1
parse.go
plugin/dapp/evmxgo/executor/parse.go
+1
-1
No files found.
plugin/dapp/evm/executor/query_test.go
0 → 100644
View file @
de15b6e6
package
executor
import
(
"fmt"
"testing"
"github.com/33cn/chain33/common"
evmAbi
"github.com/33cn/plugin/plugin/dapp/evm/executor/abi"
"gotest.tools/assert"
)
const
abiStr
=
"[{
\"
inputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
constructor
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
account
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
operator
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"
approved
\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
name
\"
:
\"
ApprovalForAll
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
operator
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
from
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
ids
\"
,
\"
type
\"
:
\"
uint256[]
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
values
\"
,
\"
type
\"
:
\"
uint256[]
\"
}],
\"
name
\"
:
\"
TransferBatch
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
operator
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
from
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
id
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
value
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
TransferSingle
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
owner
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
tokenId
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
TransferToken
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
value
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
id
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
URI
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
account
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
id
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
balanceOf
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address[]
\"
,
\"
name
\"
:
\"
accounts
\"
,
\"
type
\"
:
\"
address[]
\"
},{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
ids
\"
,
\"
type
\"
:
\"
uint256[]
\"
}],
\"
name
\"
:
\"
balanceOfBatch
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256[]
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
owner
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
tokenId
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
burnToken
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
owner
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
tokenIds
\"
,
\"
type
\"
:
\"
uint256[]
\"
},{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
amounts
\"
,
\"
type
\"
:
\"
uint256[]
\"
}],
\"
name
\"
:
\"
burnTokenBatch
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
tokenId
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
getTokenInfo
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
string
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
owner
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
getUserTokenIds
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256[]
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
account
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
operator
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
isApprovedForAll
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
owner
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
tokenId
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
mintToken
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
owner
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
tokenIds
\"
,
\"
type
\"
:
\"
uint256[]
\"
},{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
amounts
\"
,
\"
type
\"
:
\"
uint256[]
\"
}],
\"
name
\"
:
\"
mintTokenBatch
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
from
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
ids
\"
,
\"
type
\"
:
\"
uint256[]
\"
},{
\"
internalType
\"
:
\"
uint256[]
\"
,
\"
name
\"
:
\"
amounts
\"
,
\"
type
\"
:
\"
uint256[]
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
data
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
safeBatchTransferFrom
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
from
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
id
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
amount
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
data
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
safeTransferFrom
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
operator
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"
approved
\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
name
\"
:
\"
setApprovalForAll
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
tokenId
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
tokenInfo
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
setTokenInfo
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes4
\"
,
\"
name
\"
:
\"
interfaceId
\"
,
\"
type
\"
:
\"
bytes4
\"
}],
\"
name
\"
:
\"
supportsInterface
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
owner
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
tokenId
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
transferToken
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
uri
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
string
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
}]"
//mintTokenBatch(address owner, uint256[] calldata tokenIds, uint256[] calldata amounts)
func
Test_Pack
(
t
*
testing
.
T
)
{
_
,
packData
,
err
:=
evmAbi
.
Pack
(
"mintTokenBatch(14KEKbYtKKQm4wMthSK9J4La4nAiidGozt, [1,2,3], [100, 200, 300])"
,
abiStr
,
false
)
assert
.
Equal
(
t
,
nil
,
err
)
packStr
:=
common
.
ToHex
(
packData
)
fmt
.
Println
(
"packStr = "
,
packStr
)
//0xa08fad67000000000000000000000000245afbf176934ccdd7ca291a8dddaa13c8184822000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000012c
}
func
Test_Unpack
(
t
*
testing
.
T
)
{
_
,
packData
,
err
:=
evmAbi
.
Pack
(
"mintTokenBatch(14KEKbYtKKQm4wMthSK9J4La4nAiidGozt, [1,2,3], [100, 200, 300])"
,
abiStr
,
false
)
assert
.
Equal
(
t
,
nil
,
err
)
packStr
:=
common
.
ToHex
(
packData
)
fmt
.
Println
(
"packStr = "
,
packStr
)
outputs
,
err
:=
evmAbi
.
Unpack
(
packData
,
"mintTokenBatch"
,
abiStr
)
assert
.
Equal
(
t
,
nil
,
err
)
for
i
,
info
:=
range
outputs
{
fmt
.
Println
(
i
,
"th info = "
,
info
)
}
}
func
Test_UnpackEvent
(
t
*
testing
.
T
)
{
//event TransferToken(address owner, address to, uint256 tokenId, uint256 amount);
packData
,
err
:=
common
.
FromHex
(
"0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000098968100000000000000000000000000000000000000000000000000000000009896820000000000000000000000000000000000000000000000000000000000989683000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c8"
)
assert
.
Equal
(
t
,
nil
,
err
)
outputs
,
err
:=
evmAbi
.
UnpackOutputOrEvent
(
packData
,
"TransferToken"
,
abiStr
)
assert
.
Equal
(
t
,
nil
,
err
)
for
i
,
info
:=
range
outputs
{
fmt
.
Println
(
i
,
"th info = "
,
info
)
}
}
const
BridgeBankABI
=
"[{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_operatorAddress
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_oracleAddress
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_ethereumBridgeAddress
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
constructor
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_beneficiary
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
LogBridgeTokenMint
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_ownerFrom
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_ethereumReceiver
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_nonce
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
LogEthereumTokenBurn
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_from
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_to
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_value
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_nonce
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
LogLock
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
LogNewBridgeToken
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_value
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
LogUnlock
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
payable
\"
:true,
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
fallback
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
addToken2LockList
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
bridgeTokenCount
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
bridgeTokenCreated
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
bridgeTokenWhitelist
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_ethereumReceiver
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_ethereumTokenAddress
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
burnBridgeTokens
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_threshold
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"
_percents
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
name
\"
:
\"
configLockedTokenOfflineSave
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"
_offlineSave
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
configOfflineSaveAccount
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
createNewBridgeToken
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
ethereumBridge
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractEthereumBridge
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"
_id
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
getEthereumDepositStatus
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
getLockedTokenAddress
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
getToken2address
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
getofflineSaveCfg
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
hasBridgeTokenCreated
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
highThreshold
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_recipient
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
lock
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:true,
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
lockNonce
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
lockedFunds
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
lowThreshold
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_ethereumSender
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"
_intendedRecipient
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_bridgeTokenAddress
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
mintBridgeTokens
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
offlineSave
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
offlineSaveCfgs
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_threshold
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"
_percents
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
operator
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
oracle
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractOracle
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
token2address
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
tokenAllow2Lock
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"
_recipient
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
unlock
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"
_id
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
viewEthereumDeposit
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
}]"
func
Test_UnpackEventLock
(
t
*
testing
.
T
)
{
//event TransferToken(address owner, address to, uint256 tokenId, uint256 amount);
packData
,
err
:=
common
.
FromHex
(
"0x000000000000000000000000809b923eea05ad681a0ec1459e613cd7af7f5f1800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000001dcd650000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000014bc333839e37bc7faad0137abae2275030555101f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000034254590000000000000000000000000000000000000000000000000000000000"
)
assert
.
Equal
(
t
,
nil
,
err
)
outputs
,
err
:=
evmAbi
.
UnpackOutputOrEvent
(
packData
,
"LogLock"
,
BridgeBankABI
)
assert
.
Equal
(
t
,
nil
,
err
)
for
i
,
info
:=
range
outputs
{
fmt
.
Println
(
i
,
"th info = "
,
info
)
}
}
//UnpackLogLock module=cross2eth_relayer
//value=500000000
//symbol=BTY
//token addr on chain33 evm=1111111111111111111114oLvT2
//chain33 sender=1Cj1rqUenPmkeD6A8MGEzkBKQFN2H9yL3x
//ethereum recipient=0xbc333839E37bc7fAAD0137aBaE2275030555101f
//nonce=1
const
BridgeBankABIBridgevmxgo
=
"[{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_operatorAddress
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_oracleAddress
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_goAssetBridgeAddress
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
constructor
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_beneficiary
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
LogBridgeTokenMint
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_ownerFrom
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_goAssetReceiver
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_nonce
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
LogGoAssetTokenBurn
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_from
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_value
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_nonce
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
LogLock
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
LogNewBridgeToken
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_to
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_value
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
LogUnlock
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
payable
\"
:true,
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
fallback
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
addToken2LockList
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
bridgeTokenCount
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
bridgeTokenCreated
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
bridgeTokenWhitelist
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_goAssetReceiver
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_goAssetTokenAddress
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
burnBridgeTokens
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_threshold
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"
_percents
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
name
\"
:
\"
configLockedTokenOfflineSave
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"
_offlineSave
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
configOfflineSaveAccount
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
createNewBridgeToken
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"
_id
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
getGoAssetDepositStatus
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
getLockedTokenAddress
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
getToken2address
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
getofflineSaveCfg
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
goAssetBridge
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractGoAssetBridge
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
}],
\"
name
\"
:
\"
hasBridgeTokenCreated
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bool
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bool
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
highThreshold
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_recipient
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
lock
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:true,
\"
stateMutability
\"
:
\"
payable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
lockNonce
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
lockedFunds
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
lowThreshold
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_goAssetSender
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"
_intendedRecipient
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_bridgeTokenAddress
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
mintBridgeTokens
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
offlineSave
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
offlineSaveCfgs
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_threshold
\"
,
\"
type
\"
:
\"
uint256
\"
},{
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"
_percents
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
operator
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[],
\"
name
\"
:
\"
oracle
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractOracle
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
token2address
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
tokenAllow2Lock
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:false,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"
_recipient
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_token
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"
_symbol
\"
,
\"
type
\"
:
\"
string
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_amount
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
unlock
\"
,
\"
outputs
\"
:[],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
constant
\"
:true,
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"
_id
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
viewGoAssetDeposit
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
addresspayable
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
payable
\"
:false,
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
}]"
//'lock(1BCGLhdcdthNutQowV2YShuuN9fJRRGLxu, 195ycckxqnxyaQeLYTQvgETr1vsEp4NYmP, 500000000)'
func
Test_UnpackEventLockOfBridgevmxgo
(
t
*
testing
.
T
)
{
//event TransferToken(address owner, address to, uint256 tokenId, uint256 amount);
packData
,
err
:=
common
.
FromHex
(
"0x000000000000000000000000143b825fde7a42043b2cedef6b4c6f57c04d71b70000000000000000000000006fd2a3693c289b6c3c211f5d2f85ce145d1afaeb00000000000000000000000058b1edde0fc37c0f7f4a23d1c2df488ec5df0fe100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000001dcd6500000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000034554480000000000000000000000000000000000000000000000000000000000"
)
assert
.
Equal
(
t
,
nil
,
err
)
outputs
,
err
:=
evmAbi
.
UnpackOutputOrEvent
(
packData
,
"LogLock"
,
BridgeBankABIBridgevmxgo
)
assert
.
Equal
(
t
,
nil
,
err
)
for
i
,
info
:=
range
outputs
{
fmt
.
Println
(
i
,
"th info = "
,
info
)
}
}
plugin/dapp/evmxgo/executor/evmxgodb.go
View file @
de15b6e6
...
...
@@ -256,7 +256,7 @@ func (action *evmxgoAction) mint(mint *evmxgotypes.EvmxgoMint, tx2lock *types.Tr
return
nil
,
types
.
ErrInvalidParam
}
cfg
:=
action
.
api
.
GetConfig
()
if
err
:=
checkMin
e
Para
(
mint
,
tx2lock
);
nil
!=
err
{
if
err
:=
checkMin
t
Para
(
mint
,
tx2lock
);
nil
!=
err
{
return
nil
,
err
}
...
...
plugin/dapp/evmxgo/executor/parse.go
View file @
de15b6e6
...
...
@@ -16,7 +16,7 @@ const (
//solidity interface: function lock(address _recipient, address _token, uint256 _amount)
//铸币交易的接收人必须与发起lock交易时填写的接收地址一致
func
checkMin
e
Para
(
mint
*
evmxgotypes
.
EvmxgoMint
,
tx2lock
*
types
.
Transaction
)
error
{
func
checkMin
t
Para
(
mint
*
evmxgotypes
.
EvmxgoMint
,
tx2lock
*
types
.
Transaction
)
error
{
var
action
evmtypes
.
EVMContractAction
if
err
:=
types
.
Decode
(
tx2lock
.
Payload
,
&
action
);
nil
!=
err
{
return
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