1
This commit is contained in:
parent
911c2572ac
commit
9712ad3914
108
server/web3sign/controllers/activate.js
Normal file
108
server/web3sign/controllers/activate.js
Normal file
@ -0,0 +1,108 @@
|
||||
const ethUtil = require('ethereumjs-util');
|
||||
const sigUtil = require('@metamask/eth-sig-util');
|
||||
|
||||
const app = require('j7/app');
|
||||
const utils = require('j7/utils');
|
||||
const bcutils = require('j7/bcutils');
|
||||
const bc = require('../blockchain');
|
||||
const metaFactory = require('../metadata/factory');
|
||||
|
||||
async function activate721Nft(session) {
|
||||
try {
|
||||
const accountId = session.request('account_id');
|
||||
const account = session.request('account');
|
||||
const sessionId = session.request('session_id');
|
||||
const tokenId = session.request('token_id');
|
||||
const tokenType = session.request('token_type');
|
||||
const itemUniId = session.request('item_uniid');
|
||||
const itemId = session.request('item_id');
|
||||
|
||||
const nftAddress = bc.getNftAddress(tokenType);
|
||||
const userAddress = metaFactory.getUserAddress();
|
||||
|
||||
{
|
||||
const itemMeta = metaFactory.getMetaByKey('Item', itemId);
|
||||
if (!itemMeta) {
|
||||
session.rspErr(101, 'item_id param error');
|
||||
return;
|
||||
}
|
||||
if (itemMeta.getNftType() != tokenType) {
|
||||
session.rspErr(101, 'item_id param error');
|
||||
return;
|
||||
}
|
||||
if (!(itemMeta.getNftType() == bcutils.HERO_TYPE ||
|
||||
itemMeta.getNftType() == bcutils.EQUIP_TYPE ||
|
||||
itemMeta.getNftType() == bcutils.CHIP_TYPE)) {
|
||||
session.rspErr(101, 'token_type param error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
{
|
||||
if (!nftAddress) {
|
||||
session.rspErr(101, 'token_type param error');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const transModel = session.createModel('Transaction');
|
||||
const {err, seqId} = await transModel.add(account, session.requestToJson());
|
||||
if (err) {
|
||||
session.rspErr(500, 'server internal error');
|
||||
return;
|
||||
}
|
||||
|
||||
const nowTime = utils.getUtcTime();
|
||||
const transId = bcutils.genTransId
|
||||
(
|
||||
bcutils.BC_TRANS_FUNC_ACTIVATE,
|
||||
nowTime,
|
||||
seqId,
|
||||
[
|
||||
itemUniId,
|
||||
itemId
|
||||
]
|
||||
);
|
||||
await transModel.update
|
||||
(
|
||||
seqId,
|
||||
[
|
||||
['trans_id', transId]
|
||||
]);
|
||||
const nonce = transId;
|
||||
const tokenIds = [tokenId];
|
||||
utils.arrayToStrings(tokenIds);
|
||||
let signStr = await bc.web3.utils.soliditySha3
|
||||
(
|
||||
account,
|
||||
nftAddress,
|
||||
nowTime,
|
||||
nonce,
|
||||
...tokenIds
|
||||
);
|
||||
let signature = await bc.web3.eth.sign(signStr, userAddress);
|
||||
signature = signature.replace(/00$/, "1b").replace(/01$/, "1c");
|
||||
|
||||
const rspParams = [
|
||||
nftAddress,
|
||||
utils.jsonEncode(tokenIds),
|
||||
nowTime,
|
||||
nonce,
|
||||
signature
|
||||
];
|
||||
utils.arrayToStrings(rspParams);
|
||||
|
||||
session.rspData({
|
||||
'trans_id' : transId,
|
||||
'params': rspParams
|
||||
});
|
||||
} catch (e) {
|
||||
session.rspErr(1, 1);
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
app.registerHandler('BcService', 'activate721Nft', activate721Nft);
|
||||
}
|
||||
|
||||
exports.init = init;
|
0
server/web3sign/controllers/game_item_mall.js
Normal file
0
server/web3sign/controllers/game_item_mall.js
Normal file
0
server/web3sign/controllers/game_item_market.js
Normal file
0
server/web3sign/controllers/game_item_market.js
Normal file
Loading…
x
Reference in New Issue
Block a user