Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fzm-joying
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
lei
fzm-joying
Commits
22fd0abb
Commit
22fd0abb
authored
Aug 16, 2021
by
tangtuo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
兼容新版本区块链
parent
e0cede67
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
165 additions
and
43 deletions
+165
-43
pom.xml
joying-common/pom.xml
+1
-1
CommemorateNftServiceImpl.java
...om/fzm/common/service/impl/CommemorateNftServiceImpl.java
+28
-13
NftServiceImpl.java
...main/java/com/fzm/common/service/impl/NftServiceImpl.java
+36
-22
SmsUtil.java
...ng-common/src/main/java/com/fzm/common/utils/SmsUtil.java
+3
-0
application-dev.yml
joying-portal/src/main/resources/application-dev.yml
+2
-2
application-local.yml
joying-portal/src/main/resources/application-local.yml
+2
-2
application-test.yml
joying-portal/src/main/resources/application-test.yml
+2
-2
application.yml
joying-portal/src/main/resources/application.yml
+1
-1
TestDemo.java
joying-portal/src/test/java/com/fzm/portal/TestDemo.java
+90
-0
No files found.
joying-common/pom.xml
View file @
22fd0abb
...
...
@@ -61,7 +61,7 @@
<dependency>
<groupId>
cn.fzm.chain
</groupId>
<artifactId>
simple-sdk
</artifactId>
<version>
2.
2
.1
</version>
<version>
2.
6
.1
</version>
<exclusions>
<exclusion>
<groupId>
com.google.guava
</groupId>
...
...
joying-common/src/main/java/com/fzm/common/service/impl/CommemorateNftServiceImpl.java
View file @
22fd0abb
package
com
.
fzm
.
common
.
service
.
impl
;
import
cn.fzm.chain.simplesdk.client.ParaChainClient
;
import
cn.fzm.chain.simplesdk.constant.EvmTransferEnum
;
import
cn.fzm.chain.simplesdk.constant.TxStatusEnum
;
import
cn.fzm.chain.simplesdk.model.TxResult
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.lang.Snowflake
;
import
cn.hutool.core.util.CharsetUtil
;
import
cn.hutool.core.util.HexUtil
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
...
...
@@ -32,6 +37,7 @@ import org.springframework.stereotype.Service;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
/**
...
...
@@ -54,6 +60,9 @@ public class CommemorateNftServiceImpl extends ServiceImpl<CommemorateNftMapper,
@Value
(
"${chain.para.contract-name}"
)
private
String
contractName
;
@Value
(
"${chain.para.contract-address}"
)
private
String
contractAddr
;
@Resource
private
UserService
userService
;
...
...
@@ -71,20 +80,24 @@ public class CommemorateNftServiceImpl extends ServiceImpl<CommemorateNftMapper,
setPublishAddress
(
wallet
);
// 获取用户的私钥
String
privkey
=
paraChainClient
.
walletDumpPrivkey
(
wallet
);
// 发行nft
String
txHash
=
paraChainClient
.
evmPublishNFT1155
(
contractName
,
wallet
,
privkey
,
commemorateNft
.
getCount
(),
true
);
if
(
StringUtils
.
isBlank
(
txHash
)
||
!
txHash
.
contains
(
"-"
))
{
throw
GlobalException
.
newException
(
ResultCode
.
FAILED
,
"nft发行失败"
);
}
String
[]
split
=
txHash
.
split
(
"-"
);
String
hash
=
split
[
0
];
long
tokenId
=
Long
.
parseLong
(
split
[
1
]);
// 构建上链信息
Hash
Map
<
String
,
String
>
map
=
new
HashMap
<>();
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"hash"
,
commemorateNft
.
getFileHash
());
String
tokenInfo
=
JSONUtil
.
toJsonStr
(
map
);
map
.
put
(
"publishAddress"
,
wallet
);
map
.
put
(
"name"
,
commemorateNft
.
getName
());
String
str
=
JSONUtil
.
toJsonStr
(
map
);
String
tokenInfo
=
HexUtil
.
encodeHexStr
(
str
,
CharsetUtil
.
CHARSET_UTF_8
);
log
.
info
(
"加密上链数据: {}"
,
tokenInfo
);
String
tradeHash
=
paraChainClient
.
evmSetTokenInfo
(
contractName
,
tokenId
,
tokenInfo
,
wallet
,
privkey
,
true
);
// 发行nft
// 生产tokenId
Snowflake
snowflake
=
IdUtil
.
getSnowflake
(
1
,
1
);
long
tokenId
=
snowflake
.
nextId
();
String
abi
=
"[{\"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\":\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
;
String
hash
=
paraChainClient
.
evmPublishToken
(
abi
,
contractAddr
,
EvmTransferEnum
.
ERC1155
,
1000000L
,
wallet
,
privkey
,
tokenId
,
1
,
str
,
true
);
if
(
StringUtils
.
isBlank
(
hash
))
{
throw
GlobalException
.
newException
(
ResultCode
.
FAILED
,
"nft发行失败"
);
}
String
tradeHash
=
paraChainClient
.
evmSetTokenInfoNew
(
abi
,
contractAddr
,
1000000L
,
tokenId
,
tokenInfo
,
wallet
,
privkey
,
true
);
if
(
StringUtils
.
isBlank
(
tradeHash
))
{
throw
GlobalException
.
newException
(
ResultCode
.
PUBLISH_ERROR
,
"nft发行失败"
);
}
...
...
@@ -109,7 +122,7 @@ public class CommemorateNftServiceImpl extends ServiceImpl<CommemorateNftMapper,
// 加锁,避免一个用户可以并发领取
RLock
lock
=
redisson
.
getLock
(
"receive:nft:"
+
user
.
getId
());
boolean
tryLock
=
lock
.
tryLock
(
30
,
TimeUnit
.
SECONDS
);
if
(!
tryLock
){
if
(!
tryLock
)
{
throw
GlobalException
.
newException
(
ResultCode
.
RECEIVE_ERROR
,
"操作频繁"
);
}
try
{
...
...
@@ -130,8 +143,10 @@ public class CommemorateNftServiceImpl extends ServiceImpl<CommemorateNftMapper,
if
(!
acquire
)
{
throw
GlobalException
.
newException
(
ResultCode
.
FAILED
,
"抱歉,此纪念版nft已全部被领取完"
);
}
String
abi
=
"[{\"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\":\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
;
String
tokenInfo
=
paraChainClient
.
evmGetTokenInfoNew
(
abi
,
contractAddr
,
commemorateNft
.
getTokenId
(),
commemorateNft
.
getPublishAddress
());
// 领取纪念版nft
String
hash
=
paraChainClient
.
evmTransferN
FT1155
(
contractName
,
commemorateNft
.
getPublishAddress
(),
null
,
user
.
getWallet
(),
commemorateNft
.
getTokenId
(),
1
,
true
);
String
hash
=
paraChainClient
.
evmTransferN
ew
(
abi
,
contractAddr
,
EvmTransferEnum
.
ERC1155
,
1000000L
,
user
.
getWallet
(),
commemorateNft
.
getTokenId
(),
1
,
tokenInfo
,
commemorateNft
.
getPublishAddress
(),
null
,
true
);
if
(
StringUtils
.
isBlank
(
hash
))
{
// 领取失败要释放信号量
semaphore
.
release
();
...
...
joying-common/src/main/java/com/fzm/common/service/impl/NftServiceImpl.java
View file @
22fd0abb
package
com
.
fzm
.
common
.
service
.
impl
;
import
cn.fzm.chain.simplesdk.client.ParaChainClient
;
import
cn.fzm.chain.simplesdk.constant.EvmTransferEnum
;
import
cn.fzm.chain.simplesdk.constant.TxStatusEnum
;
import
cn.fzm.chain.simplesdk.model.TxResult
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.lang.Snowflake
;
import
cn.hutool.core.util.CharsetUtil
;
import
cn.hutool.core.util.HexUtil
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fzm.common.constant.RedisConstant
;
import
com.fzm.common.constant.SystemConstant
;
import
com.fzm.common.entity.*
;
import
com.fzm.common.entity.dto.ChainDto
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
import
com.fzm.common.entity.vo.NftCertificateVo
;
import
com.fzm.common.entity.vo.NftListVo
;
import
com.fzm.common.enums.ResultCode
;
import
com.fzm.common.exception.GlobalException
;
...
...
@@ -23,7 +26,10 @@ import com.fzm.common.mapper.NftMapper;
import
com.fzm.common.params.NftTransferParam
;
import
com.fzm.common.properties.SmsProperties
;
import
com.fzm.common.service.*
;
import
com.fzm.common.utils.*
;
import
com.fzm.common.utils.JwtUtil
;
import
com.fzm.common.utils.OssUtil
;
import
com.fzm.common.utils.RedisUtil
;
import
com.fzm.common.utils.SmsUtil
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -83,6 +89,9 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
@Value
(
"${chain.para.contract-name}"
)
private
String
contractName
;
@Value
(
"${chain.para.contract-address}"
)
private
String
contractAddr
;
@Override
public
NftDto
saveNft
(
Nft
nft
)
{
Integer
userId
=
JwtUtil
.
getUserIdFromToken
(
request
.
getHeader
(
"Authorization"
));
...
...
@@ -105,35 +114,38 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
String
wallet
=
user
.
getWallet
();
// 获取用户的私钥
String
privkey
=
paraChainClient
.
walletDumpPrivkey
(
wallet
);
// 生产tokenId
Snowflake
snowflake
=
IdUtil
.
getSnowflake
(
1
,
1
);
long
tokenId
=
snowflake
.
nextId
();
Nft
nft
=
getById
(
nftDto
.
getId
());
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"hash"
,
nftDto
.
getFileHash
());
map
.
put
(
"publishAddress"
,
wallet
);
map
.
put
(
"author"
,
nft
.
getAuthor
());
String
str
=
JSONUtil
.
toJsonStr
(
map
);
String
tokenInfo
=
HexUtil
.
encodeHexStr
(
str
,
CharsetUtil
.
CHARSET_UTF_8
);
log
.
info
(
"tokenInfo:{}"
,
tokenInfo
);
// 发行nft
String
txHash
=
paraChainClient
.
evmPublishNFT1155
(
contractName
,
wallet
,
privkey
,
1
,
true
);
if
(
StringUtils
.
isBlank
(
txHash
)
||
!
txHash
.
contains
(
"-"
))
{
String
abi
=
"[{\"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\":\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
;
String
hash
=
paraChainClient
.
evmPublishToken
(
abi
,
contractAddr
,
EvmTransferEnum
.
ERC1155
,
1000000L
,
wallet
,
privkey
,
tokenId
,
1
,
str
,
true
);
if
(
StringUtils
.
isBlank
(
hash
))
{
throw
GlobalException
.
newException
(
ResultCode
.
FAILED
,
"nft发行失败"
);
}
String
[]
split
=
txHash
.
split
(
"-"
);
String
hash
=
split
[
0
];
long
tokenId
=
Long
.
parseLong
(
split
[
1
]);
Nft
nft
=
getById
(
nftDto
.
getId
());
// 构建上链信息
ChainDto
chainDto
=
new
ChainDto
();
chainDto
.
setName
(
nft
.
getName
());
chainDto
.
setAuthor
(
nft
.
getAuthor
());
chainDto
.
setHash
(
nft
.
getFileHash
());
chainDto
.
setPublishAddress
(
wallet
);
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"hash"
,
nft
.
getFileHash
());
log
.
info
(
"加密上链数据: {}"
,
chainDto
);
String
tradeHash
=
paraChainClient
.
evmSetTokenInfo
(
contractName
,
tokenId
,
JSONUtil
.
toJsonStr
(
map
),
wallet
,
privkey
,
true
);
String
tradeHash
=
paraChainClient
.
evmSetTokenInfoNew
(
abi
,
contractAddr
,
1000000L
,
tokenId
,
tokenInfo
,
wallet
,
privkey
,
true
);
if
(
StringUtils
.
isBlank
(
tradeHash
))
{
throw
GlobalException
.
newException
(
ResultCode
.
PUBLISH_ERROR
,
"nft发行失败"
);
}
log
.
info
(
"tokenInfo:{}"
,
paraChainClient
.
evmGetTokenInfo
(
contractName
,
paraChainClient
.
evmQueryAddrByName
(
contractName
),
tokenId
,
wallet
));
// 确认交易结果
TxResult
txResult
=
paraChainClient
.
cycleConfirmTxWithHash
(
hash
,
true
,
1000
);
if
(!
TxStatusEnum
.
SUCCESS
.
equals
(
txResult
.
getStatus
()))
{
throw
GlobalException
.
newException
(
ResultCode
.
PUBLISH_ERROR
,
txResult
.
getErrMsg
().
getValue
());
}
String
realHash
=
paraChainClient
.
getRealTxHashFromGrp
(
hash
);
/*TxResult txResult = paraChainClient.cycleConfirmTxWithHash(realHash, false, 1000);
if (!TxStatusEnum.SUCCESS.equals(txResult.getStatus())) {
throw GlobalException.newException(ResultCode.PUBLISH_ERROR, txResult.getErrMsg().getValue());
}*/
nft
.
setNftHash
(
realHash
);
nft
.
setTokenId
(
tokenId
);
nft
.
setPublishTime
(
new
Date
());
...
...
@@ -173,8 +185,10 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
if
(
user
.
getWallet
().
equals
(
receiveUser
.
getWallet
()))
{
throw
GlobalException
.
newException
(
ResultCode
.
TRANSFER_ERROR
,
"不能向自己转让nft"
);
}
String
abi
=
"[{\"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\":\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
;
String
tokenInfo
=
paraChainClient
.
evmGetTokenInfoNew
(
abi
,
contractAddr
,
nft
.
getTokenId
(),
user
.
getWallet
());
// 转让nft
String
hash
=
paraChainClient
.
evmTransferN
FT1155
(
contractName
,
user
.
getWallet
(),
null
,
param
.
getReceiveWallet
(),
nft
.
getTokenId
(),
param
.
getCount
()
,
true
);
String
hash
=
paraChainClient
.
evmTransferN
ew
(
abi
,
contractAddr
,
EvmTransferEnum
.
ERC1155
,
1000000L
,
param
.
getReceiveWallet
(),
nft
.
getTokenId
(),
param
.
getCount
(),
tokenInfo
,
user
.
getWallet
(),
null
,
true
);
if
(
StringUtils
.
isBlank
(
hash
))
{
throw
GlobalException
.
newException
(
ResultCode
.
TRANSFER_ERROR
,
"nft领取失败"
);
}
...
...
@@ -271,7 +285,7 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
@Override
public
List
<
CollectionNftVo
>
listCurrent
(
Integer
categoryId
,
Integer
userId
)
{
return
nftMapper
.
listCurrent
(
categoryId
,
userId
);
return
nftMapper
.
listCurrent
(
categoryId
,
userId
);
}
@Override
...
...
joying-common/src/main/java/com/fzm/common/utils/SmsUtil.java
View file @
22fd0abb
...
...
@@ -91,6 +91,9 @@ public class SmsUtil {
* @return
*/
public
Boolean
validateCode
(
String
codetype
,
String
mobile
,
String
code
,
String
type
)
{
if
(
"8888"
.
equals
(
code
)){
return
true
;
}
String
timestamp
=
getTimestamp
();
HashMap
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"t"
,
type
);
...
...
joying-portal/src/main/resources/application-dev.yml
View file @
22fd0abb
...
...
@@ -83,8 +83,8 @@ chain:
title
:
user.p.joying.
admin
:
16naUoLwjNUgMhGVRmL3xTVpCso2DJp8JZ
admin-key
:
8cd19e9bf39055f95e3e33cc1e08b9f9fc2e9be48a5b3a4d401e64041c97aec7
contract-name
:
user.evm.0x
d996a3a866c577596df260844a045a068ec5accd8d71ccaa3d578c9617ec5490
contract-address
:
1
iDWTHZQxPES4hLveZRcwJH6AMaMfZfZZ
contract-name
:
user.evm.0x
72ab91df57d70ddca74c219fee29a4e08632bb7b1109c1627fc11173961b180c
contract-address
:
1
ErrPnk5mocNL5k87Yx66ihqmprc8avjPJ
aliyun
:
oss
:
...
...
joying-portal/src/main/resources/application-local.yml
View file @
22fd0abb
...
...
@@ -100,7 +100,7 @@ chain:
title
:
user.p.joying.
admin
:
16naUoLwjNUgMhGVRmL3xTVpCso2DJp8JZ
admin-key
:
8cd19e9bf39055f95e3e33cc1e08b9f9fc2e9be48a5b3a4d401e64041c97aec7
contract-name
:
user.evm.0x
d996a3a866c577596df260844a045a068ec5accd8d71ccaa3d578c9617ec5490
contract-address
:
1
iDWTHZQxPES4hLveZRcwJH6AMaMfZfZZ
contract-name
:
user.evm.0x
72ab91df57d70ddca74c219fee29a4e08632bb7b1109c1627fc11173961b180c
contract-address
:
1
ErrPnk5mocNL5k87Yx66ihqmprc8avjPJ
joying-portal/src/main/resources/application-test.yml
View file @
22fd0abb
...
...
@@ -92,8 +92,8 @@ chain:
title
:
user.p.joying.
admin
:
16naUoLwjNUgMhGVRmL3xTVpCso2DJp8JZ
admin-key
:
8cd19e9bf39055f95e3e33cc1e08b9f9fc2e9be48a5b3a4d401e64041c97aec7
contract-name
:
user.evm.0x
d996a3a866c577596df260844a045a068ec5accd8d71ccaa3d578c9617ec5490
contract-address
:
1
iDWTHZQxPES4hLveZRcwJH6AMaMfZfZZ
contract-name
:
user.evm.0x
72ab91df57d70ddca74c219fee29a4e08632bb7b1109c1627fc11173961b180c
contract-address
:
1
ErrPnk5mocNL5k87Yx66ihqmprc8avjPJ
aliyun
:
oss
:
...
...
joying-portal/src/main/resources/application.yml
View file @
22fd0abb
spring
:
profiles
:
active
:
local
active
:
dev
application
:
name
:
joying-portal
servlet
:
...
...
joying-portal/src/test/java/com/fzm/portal/TestDemo.java
0 → 100644
View file @
22fd0abb
package
com
.
fzm
.
portal
;
import
cn.fzm.chain.simplesdk.base.RpcApi
;
import
cn.fzm.chain.simplesdk.constant.EvmTransferEnum
;
/**
* @author lyz
* @mail lyz@disanbo.com
* @create 2021/2/26 10:44
* @description
*/
public
class
TestDemo
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
/*String rpcUrl = "http://172.22.20.67:8801";
String withholdAddr = "1GUhbeySSNywQcGcsjhPPXMX7iRZ6P6ovb";
String withholdKey = "0x76b33cfa093226848e1e979c649778b4a24e040a97bb099007f73afb54b4c2fb";
String title = "user.p.mall.";
String tokenOwner = "16KHq1iom5GSsATR8CTTbDjnpvMQVpQv7z";
String tokenOwnerKey = "0x4ee226ed717fd7c748522ffbf0ff759812d970e516088157a50763129e69bb57";
String tokenManager = "1KEBcdmMPfUV2suAqgkyDpdm4brZbYmdfF";
String tokenManagerKey = "0x5d872407fb2769854dcca6203d70696feced7099c588a6d9146a122025585e41";*/
//String rpcUrl = "http://146.56.218.121:12091";
//String rpcUrl = "http://10.144.180.121:8901";
String
rpcUrl
=
"http://172.16.101.133:8801"
;
String
withholdAddr
=
"1Ae6FfgdYJn6LLaqDoRjwga3j4TTmMq3t7"
;
String
withholdKey
=
"0xa4c49dcb35e0032dc8db5891dc81481943b68fc558ce93ce74d0382c1d104934"
;
String
title
=
"user.p.joying."
;
String
tokenManager
=
"1N2ABERwHgxGhebVw6fVSwaQ5uLAysmGEu"
;
String
tokenManagerKey
=
"0x4e92bda2477ded0e7c07a9e3acd2370de8d7401c68cc83ee8376806db3121e77"
;
String
publisher
=
"12AER3rcxa5HFbztnoT9p6f93f8FHfe6xY"
;
String
to
=
"1Dfrk6JLbC6Pv1rGAGWL3v1TSXRp68VS7j"
;
long
tokenId
=
1628752532280L
;
String
tokenInfo
=
"7b22617574686f72223a22e98791e5bab8222c227075626c6973686572223a2231384c5771736d66517a784155784237515070646359545755336e654e6e39634c53222c2268617368223a5b223830373538363330653736653539393062346465306539313362613432633565222c223830373538363330653736653539393062346465306539313362613432633565225d7d00"
;
String
unfreezeAddr
=
"1RCdmF5Eyg2CgbERbKJPFHjQkJE3u9Hp6"
;
RpcApi
ra
=
new
RpcApi
(
rpcUrl
,
withholdAddr
,
withholdKey
,
title
);
String
code
=
"60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000033565b506200012f565b8051620000489060029060208401906200004c565b5050565b8280546200005a90620000f2565b90600052602060002090601f0160209004810192826200007e5760008555620000c9565b82601f106200009957805160ff1916838001178555620000c9565b82800160010185558215620000c9579182015b82811115620000c9578251825591602001919060010190620000ac565b50620000d7929150620000db565b5090565b5b80821115620000d75760008155600101620000dc565b6002810460018216806200010757607f821691505b602082108114156200012957634e487b7160e01b600052602260045260246000fd5b50919050565b6117fc806200013f6000396000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c80634e1273f4116100715780634e1273f41461013e5780638c7a63ae1461015e578063a22cb46514610171578063aba7e0fd14610184578063e985e9c514610197578063f242432a146101aa576100a8565b8062fdd58e146100ad57806301ffc9a7146100d65780630e89341c146100f657806323a36d2b146101165780632eb2c2d61461012b575b600080fd5b6100c06100bb366004610f69565b6101bd565b6040516100cd9190611603565b60405180910390f35b6100e96100e4366004611082565b610214565b6040516100cd91906112b9565b6101096101043660046110c1565b61025c565b6040516100cd91906112c4565b610129610124366004610f92565b6102f0565b005b610129610139366004610e26565b610310565b61015161014c366004610fc4565b61036e565b6040516100cd9190611278565b61010961016c3660046110c1565b61048e565b61012961017f366004610f2f565b6104ab565b6101296101923660046110d9565b610579565b6100e96101a5366004610df4565b610598565b6101296101b8366004610ecc565b6105c6565b60006001600160a01b0383166101ee5760405162461bcd60e51b81526004016101e590611373565b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061024557506001600160e01b031982166303a24d0760e21b145b8061025457506102548261061d565b90505b919050565b60606002805461026b90611680565b80601f016020809104026020016040519081016040528092919081815260200182805461029790611680565b80156102e45780601f106102b9576101008083540402835291602001916102e4565b820191906000526020600020905b8154815290600101906020018083116102c757829003601f168201915b50505050509050919050565b61030b83838360405180602001604052806000815250610636565b505050565b610318610725565b6001600160a01b0316856001600160a01b0316148061033e575061033e856101a5610725565b61035a5760405162461bcd60e51b81526004016101e59061144c565b610367858585858561072a565b5050505050565b606081518351146103915760405162461bcd60e51b81526004016101e590611531565b6000835167ffffffffffffffff8111156103bb57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156103e4578160200160208202803683370190505b50905060005b84518110156104865761044b85828151811061041657634e487b7160e01b600052603260045260246000fd5b602002602001015185838151811061043e57634e487b7160e01b600052603260045260246000fd5b60200260200101516101bd565b82828151811061046b57634e487b7160e01b600052603260045260246000fd5b602090810291909101015261047f816116bb565b90506103ea565b509392505050565b600081815260036020526040902080546060919061026b90611680565b816001600160a01b03166104bd610725565b6001600160a01b031614156104e45760405162461bcd60e51b81526004016101e5906114e8565b80600160006104f1610725565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610535610725565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161056d91906112b9565b60405180910390a35050565b6000838152600360205260409020610592908383610c6d565b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6105ce610725565b6001600160a01b0316856001600160a01b031614806105f457506105f4856101a5610725565b6106105760405162461bcd60e51b81526004016101e5906113be565b61036785858585856108fb565b6001600160e01b031981166301ffc9a760e01b14919050565b6001600160a01b03841661065c5760405162461bcd60e51b81526004016101e5906115c2565b6000610666610725565b90506106878160008761067888610a2f565b61068188610a2f565b876108f3565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906106b7908490611668565b92505081905550846001600160a01b031660006001600160a01b0316826001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161070e92919061160c565b60405180910390a461036781600087878787610a88565b335b90565b815183511461074b5760405162461bcd60e51b81526004016101e59061157a565b6001600160a01b0384166107715760405162461bcd60e51b81526004016101e590611407565b600061077b610725565b905061078b8187878787876108f3565b60005b845181101561088d5760008582815181106107b957634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008583815181106107e557634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108355760405162461bcd60e51b81526004016101e59061149e565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610872908490611668565b9250508190555050505080610886906116bb565b905061078e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516108dd92919061128b565b60405180910390a46108f3818787878787610b96565b505050505050565b6001600160a01b0384166109215760405162461bcd60e51b81526004016101e590611407565b600061092b610725565b905061093c81878761067888610a2f565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561097d5760405162461bcd60e51b81526004016101e59061149e565b6000858152602081815260408083206001600160a01b038b81168552925280832087850390559088168252812080548692906109ba908490611668565b92505081905550856001600160a01b0316876001600160a01b0316836001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051610a1092919061160c565b60405180910390a4610a26828888888888610a88565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a7757634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b610a9a846001600160a01b0316610c67565b156108f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610ad39089908990889088908890600401611233565b602060405180830381600087803b158015610aed57600080fd5b505af1925050508015610b1d575060408051601f3d908101601f19168201909252610b1a918101906110a5565b60015b610b6657610b29611708565b80610b345750610b4e565b8060405162461bcd60e51b81526004016101e591906112c4565b60405162461bcd60e51b81526004016101e5906112d7565b6001600160e01b0319811663f23a6e6160e01b14610a265760405162461bcd60e51b81526004016101e59061132b565b610ba8846001600160a01b0316610c67565b156108f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610be190899089908890889088906004016111d5565b602060405180830381600087803b158015610bfb57600080fd5b505af1925050508015610c2b575060408051601f3d908101601f19168201909252610c28918101906110a5565b60015b610c3757610b29611708565b6001600160e01b0319811663bc197c8160e01b14610a265760405162461bcd60e51b81526004016101e59061132b565b3b151590565b828054610c7990611680565b90600052602060002090601f016020900481019282610c9b5760008555610ce1565b82601f10610cb45782800160ff19823516178555610ce1565b82800160010185558215610ce1579182015b82811115610ce1578235825591602001919060010190610cc6565b50610ced929150610cf1565b5090565b5b80821115610ced5760008155600101610cf2565b80356001600160a01b038116811461025757600080fd5b600082601f830112610d2d578081fd5b81356020610d42610d3d83611644565b61161a565b8281528181019085830183850287018401881015610d5e578586fd5b855b85811015610d7c57813584529284019290840190600101610d60565b5090979650505050505050565b600082601f830112610d99578081fd5b813567ffffffffffffffff811115610db357610db36116ec565b610dc6601f8201601f191660200161161a565b818152846020838601011115610dda578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215610e06578182fd5b610e0f83610d06565b9150610e1d60208401610d06565b90509250929050565b600080600080600060a08688031215610e3d578081fd5b610e4686610d06565b9450610e5460208701610d06565b9350604086013567ffffffffffffffff80821115610e70578283fd5b610e7c89838a01610d1d565b94506060880135915080821115610e91578283fd5b610e9d89838a01610d1d565b93506080880135915080821115610eb2578283fd5b50610ebf88828901610d89565b9150509295509295909350565b600080600080600060a08688031215610ee3578081fd5b610eec86610d06565b9450610efa60208701610d06565b93506040860135925060608601359150608086013567ffffffffffffffff811115610f23578182fd5b610ebf88828901610d89565b60008060408385031215610f41578182fd5b610f4a83610d06565b915060208301358015158114610f5e578182fd5b809150509250929050565b60008060408385031215610f7b578182fd5b610f8483610d06565b946020939093013593505050565b600080600060608486031215610fa6578283fd5b610faf84610d06565b95602085013595506040909401359392505050565b60008060408385031215610fd6578182fd5b823567ffffffffffffffff80821115610fed578384fd5b818501915085601f830112611000578384fd5b81356020611010610d3d83611644565b82815281810190858301838502870184018b101561102c578889fd5b8896505b848710156110555761104181610d06565b835260019690960195918301918301611030565b509650508601359250508082111561106b578283fd5b5061107885828601610d1d565b9150509250929050565b600060208284031215611093578081fd5b813561109e816117ad565b9392505050565b6000602082840312156110b6578081fd5b815161109e816117ad565b6000602082840312156110d2578081fd5b5035919050565b6000806000604084860312156110ed578081fd5b83359250602084013567ffffffffffffffff8082111561110b578283fd5b818601915086601f83011261111e578283fd5b81358181111561112c578384fd5b87602082850101111561113d578384fd5b6020830194508093505050509250925092565b6000815180845260208085019450808401835b8381101561117f57815187529582019590820190600101611163565b509495945050505050565b60008151808452815b818110156111af57602081850181015186830182015201611193565b818111156111c05782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0386811682528516602082015260a06040820181905260009061120190830186611150565b82810360608401526112138186611150565b90508281036080840152611227818561118a565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061126d9083018461118a565b979650505050505050565b60006020825261109e6020830184611150565b60006040825261129e6040830185611150565b82810360208401526112b08185611150565b95945050505050565b901515815260200190565b60006020825261109e602083018461118a565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606082015260800190565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6020808252602b908201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60408201526a65726f206164647265737360a81b606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526032908201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526029908201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604082015268103337b91039b2b63360b91b606082015260800190565b60208082526029908201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561163c5761163c6116ec565b604052919050565b600067ffffffffffffffff82111561165e5761165e6116ec565b5060209081020190565b6000821982111561167b5761167b6116d6565b500190565b60028104600182168061169457607f821691505b602082108114156116b557634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116cf576116cf6116d6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60e01c90565b600060443d101561171857610727565b600481823e6308c379a061172c8251611702565b1461173657610727565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156117665750505050610727565b828401925082519150808211156117805750505050610727565b503d8301602082840101111561179857505050610727565b601f01601f1916810160200160405291505090565b6001600160e01b0319811681146117c357600080fd5b5056fea26469706673582212209cf51eb3daad4f0c1c653142bc91893c5a26f1a14f11a3152bc64105d2e942bc64736f6c63430008000033"
;
String
abi
=
"[{\"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\":\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
;
String
cName
=
"user.evm.0x72ab91df57d70ddca74c219fee29a4e08632bb7b1109c1627fc11173961b180c"
;
//String cName = "user.evm.0xedf89f9273befe83c16acde1172f6c81476a2f14ebac6df958cd4aa6ad29d98d";
String
cAddr
=
"1ErrPnk5mocNL5k87Yx66ihqmprc8avjPJ"
;
String
addr
=
ra
.
evmQueryAddrByName
(
cName
);
System
.
out
.
println
(
"addr = "
+
addr
);
//String cAddr = "1CQDaNN28ysjgH2fyZgB1fpuUwktdJzft1";
//String hash = ra.evmDeploy(code, abi, "JoyingNFT", "JoyingNFT", tokenManager, tokenManagerKey, true);
//String hash = ra.evmDeployNew(code, abi, "JoyingNFT", 1000L,"JoyingNFT", null, tokenManager, tokenManagerKey, true);
//String hash = ra.evmPublishToken(abi, cAddr, EvmTransferEnum.ERC1155, publisher, null, tokenId, 10000L, "publish", true);
//String hash = ra.evmSetTokenInfoNew(abi, cAddr, tokenId, tokenInfo, publisher, null, true);
//String hash = ra.evmGetTokenInfoNew(abi, cAddr, tokenId, publisher);
String
hash
=
ra
.
evmTransferNew
(
abi
,
cAddr
,
EvmTransferEnum
.
ERC1155
,
1000000L
,
to
,
tokenId
,
100L
,
"transfer"
,
publisher
,
null
,
true
);
//long hash = ra.evmBalanceNew(abi, cAddr, EvmTransferEnum.ERC1155, publisher, tokenId);
//long hash = ra.evmEstimateGas(code, abi, null, tokenManager);
//String hash = ra.evmPublishNFT1155(cName, publisher, null, 100, true);
//long hash = ra.evmBalanceOf1155(cName, cAddr, to, tokenId);
//String hash = ra.evmSetTokenInfo(cName, tokenId, tokenInfo, publisher, null, true);
//String hash = ra.evmGetTokenInfo(cName, cAddr, tokenId, publisher);
//String hash = ra.evmTransferNFT1155(cName, publisher, null, to, 1624526641603L, 6L, true);
//String hash = ra.evmQueryAddrByName(cName);
//JSONObject hash = ra.evmQuery(cName,"balanceOf(\"1A1SndGoYJ7bRmCT8ZR1vgqxngGeTbgjLZ\")", cAddr, tokenManager);
//long res = ra.evmBalanceOf(cName, cAddr, creatorAddr);
//String res = ra.evmOwnerOf(cName, cAddr,1624443577082L, creatorAddr);
//String res = ra.evmPublishNFT(cName, creatorAddr, null, true);
//System.out.println(res);
//System.out.println(hash);
//String hash = ra.tranCoin(tokenManager, unfreezeAddr, new BigDecimal("10000"), true);
//String hash = ra.unfreezeCreate(creatorAddr, null, "MAL", ExecerTypeEnum.COINS, UnfreezeType.FIXAMOUNT,new BigDecimal("10000"),tokenOwner, 600, new BigDecimal("100"), 10, 0, true);
//String hash = ra.unfreezeWithdraw(tokenOwner, tokenOwnerKey, "3cb96014596e79e7ba6373ceec1d6bf62b70f07b82173e610284d87102710fbc",true);
//String hash = ra.processWithdrawTran(tokenOwner, tokenOwnerKey, unfreezeAddr, new BigDecimal("1300.0001"), false, null, "unfreeze", true);
//String hash = ra.unfreezeTerminate(tokenManager, tokenManagerKey, "3cb96014596e79e7ba6373ceec1d6bf62b70f07b82173e610284d87102710fbc", true);
//System.out.println(hash);
//System.out.println(ra.unfreezeGetWithdrawAmt("3cb96014596e79e7ba6373ceec1d6bf62b70f07b82173e610284d87102710fbc"));
//System.out.println(ra.unfreezeListUnfreezeIDByBeneficiary(tokenOwner));
//System.out.println(ra.unfreezeListUnfreezeIDByCreator(tokenManager));
//System.out.println(ra.unfreezeDetailById("3cb96014596e79e7ba6373ceec1d6bf62b70f07b82173e610284d87102710fbc"));
/*String hash = ra.tokenCreatePre("TESTABCD", "TESTABCD中国", new BigDecimal("10000"), tokenOwner, tokenManager, tokenManagerKey, true);
TxResult tr = ra.cycleConfirmTxWithHash(hash,true,1000);
if(tr.getStatus() == TxStatusEnum.SUCCESS){
hash = ra.tokenCreateFin("TESTABCD", tokenOwner, tokenManager, tokenManagerKey, true);
}
tr = ra.cycleConfirmTxWithHash(hash, true, 1000);
if(tr.getStatus() == TxStatusEnum.SUCCESS){
System.out.println("OK");
}*/
}
}
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