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