This commit is contained in:
aozhiwei 2024-06-26 14:39:18 +08:00
parent 90f7d35d29
commit ed81736a03
9 changed files with 93 additions and 433 deletions

View File

@ -103,9 +103,9 @@ function asyncVerify(jwksUri, data) {
} }
async function verify(session) { async function verify(session) {
console.log('aaaaaaaaaaaaaa');
const postData = session.getBody(); const postData = session.getBody();
const jwksUri = postData['jwksUri']; const jwksUri = postData['jwksUri'];
console.log('aaaaaaaaaaaaaa', postData);
//const arr = postData['data'].split('.'); //const arr = postData['data'].split('.');
//const header = base64url.decode(arr[0]); //const header = base64url.decode(arr[0]);
//const payload = base64url.decode(arr[1]); //const payload = base64url.decode(arr[1]);

View File

@ -12,6 +12,7 @@
"base64url": "^3.0.1", "base64url": "^3.0.1",
"common": "file:../common", "common": "file:../common",
"express": "^4.17.2", "express": "^4.17.2",
"fast-jwt": "^4.0.1",
"j7": "file:../../third_party/j7", "j7": "file:../../third_party/j7",
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.2",
"jwks-rsa": "^3.1.0", "jwks-rsa": "^3.1.0",
@ -496,6 +497,14 @@
"@ethersproject/strings": "^5.7.0" "@ethersproject/strings": "^5.7.0"
} }
}, },
"node_modules/@lukeed/ms": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz",
"integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==",
"engines": {
"node": ">=8"
}
},
"node_modules/@metamask/eth-sig-util": { "node_modules/@metamask/eth-sig-util": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz",
@ -725,6 +734,17 @@
"safer-buffer": "~2.1.0" "safer-buffer": "~2.1.0"
} }
}, },
"node_modules/asn1.js": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
"integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
"dependencies": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"safer-buffer": "^2.1.0"
}
},
"node_modules/assert-plus": { "node_modules/assert-plus": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
@ -1607,6 +1627,20 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
}, },
"node_modules/fast-jwt": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/fast-jwt/-/fast-jwt-4.0.1.tgz",
"integrity": "sha512-+mdSoH0QdOdFSbbGBctJu7L1yfXRtbmjbVJ4W/PEjyvivobDena0RKwihtBkOML1P+kUJ1QuewnH8u+mROsR1w==",
"dependencies": {
"@lukeed/ms": "^2.0.1",
"asn1.js": "^5.4.1",
"ecdsa-sig-formatter": "^1.0.11",
"mnemonist": "^0.39.5"
},
"engines": {
"node": ">=16"
}
},
"node_modules/finalhandler": { "node_modules/finalhandler": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
@ -2512,6 +2546,14 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/mnemonist": {
"version": "0.39.8",
"resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.8.tgz",
"integrity": "sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==",
"dependencies": {
"obliterator": "^2.0.1"
}
},
"node_modules/mock-fs": { "node_modules/mock-fs": {
"version": "4.14.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz",
@ -2707,6 +2749,11 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/obliterator": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz",
"integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ=="
},
"node_modules/oboe": { "node_modules/oboe": {
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz",
@ -4452,6 +4499,11 @@
"@ethersproject/strings": "^5.7.0" "@ethersproject/strings": "^5.7.0"
} }
}, },
"@lukeed/ms": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz",
"integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA=="
},
"@metamask/eth-sig-util": { "@metamask/eth-sig-util": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz",
@ -4662,6 +4714,17 @@
"safer-buffer": "~2.1.0" "safer-buffer": "~2.1.0"
} }
}, },
"asn1.js": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
"integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"safer-buffer": "^2.1.0"
}
},
"assert-plus": { "assert-plus": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
@ -5393,6 +5456,17 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
}, },
"fast-jwt": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/fast-jwt/-/fast-jwt-4.0.1.tgz",
"integrity": "sha512-+mdSoH0QdOdFSbbGBctJu7L1yfXRtbmjbVJ4W/PEjyvivobDena0RKwihtBkOML1P+kUJ1QuewnH8u+mROsR1w==",
"requires": {
"@lukeed/ms": "^2.0.1",
"asn1.js": "^5.4.1",
"ecdsa-sig-formatter": "^1.0.11",
"mnemonist": "^0.39.5"
}
},
"finalhandler": { "finalhandler": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
@ -6106,6 +6180,14 @@
"mkdirp": "*" "mkdirp": "*"
} }
}, },
"mnemonist": {
"version": "0.39.8",
"resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.8.tgz",
"integrity": "sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==",
"requires": {
"obliterator": "^2.0.1"
}
},
"mock-fs": { "mock-fs": {
"version": "4.14.0", "version": "4.14.0",
"resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz",
@ -6263,6 +6345,11 @@
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
}, },
"obliterator": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz",
"integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ=="
},
"oboe": { "oboe": {
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz",

View File

@ -9,6 +9,7 @@
"base64url": "^3.0.1", "base64url": "^3.0.1",
"common": "file:../common", "common": "file:../common",
"express": "^4.17.2", "express": "^4.17.2",
"fast-jwt": "^4.0.1",
"j7": "file:../../third_party/j7", "j7": "file:../../third_party/j7",
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.2",
"jwks-rsa": "^3.1.0", "jwks-rsa": "^3.1.0",

View File

@ -1,130 +0,0 @@
const app = require('j7/app');
const utils = require('j7/utils');
const bcutils = require('j7/bcutils');
const bcconst = require('common/bcconst');
const contract = require('common/contract');
const serviceFactory = require('../services/factory');
async function buyPlanet(session) {
try {
const account = bcutils.toNormalAddress(session.request('account', ''));
const netId = session.request('net_id');
const price = session.request('price');
const currencyName = session.request('currency_name');
const ids = utils.jsonDecode(session.request('ids', ''));
const bc = serviceFactory.create('BlockChain');
{
const ret = await bc.init(netId);
if (!ret) {
session.rspErr(500, 'net_id error');
return;
}
}
{
if (!bc.isValidAddress(account)) {
session.rspErr(500, 'account error');
return;
}
}
const currency = bc.getCurrencyAddressByName(currencyName);
const userAddress = bc.getUserAddress();
{
if (!bc.isValidAddress(currency)) {
session.rspErr(500, 'ceg error');
return;
}
}
const transModel = session.createModel('Transaction');
const usedTokenIdModel = session.createModel('UsedTokenId');
const {err, seqId} = await transModel.add(account, session.requestToJson(), netId);
if (err) {
session.rspErr(500, 'server internal error');
return;
}
const nowTime = utils.getUtcTime();
const transId = bcutils.genTransId
(
bcconst.BC_FUNC_COMMON,
nowTime,
seqId,
[
]
);
await transModel.update
(
seqId,
[
['trans_id', transId]
]);
const nonce = transId;
const orderId = transId;
const nftAddresses = [];
const amounts = [];
const values = [orderId, price, nowTime, nonce];
{
for (let i = 0; i < ids.length; ++i) {
nftAddresses.push(bc.getContractAddressByName('PLANET'));
amounts.push(1);
}
}
utils.arrayToStrings(ids);
utils.arrayToStrings(amounts);
utils.arrayToStrings(values);
const signArr = [];
{
for (let i = 0; i < ids.length * 2 + 4; ++i) {
signArr.push('');
}
for (let i = 0; i < ids.length; ++i) {
signArr[i * 2] = ids[i];
signArr[i * 2 + 1] = amounts[i];
}
for (let i = 0; i < values.length; ++i) {
signArr[ids.length * 2 + i] = values[i];
}
}
console.log([
currency,
account,
...nftAddresses,
...signArr
]);
const signature = await bc.soliditySha3Sign(
currency,
account,
...nftAddresses,
...signArr
);
const rspParams = [
currency,
utils.jsonEncode(nftAddresses),
utils.jsonEncode(ids),
utils.jsonEncode(amounts),
utils.jsonEncode(values),
signature
];
utils.arrayToStrings(rspParams);
session.rspData({
'trans_id' : transId,
'order_id': orderId,
'params': rspParams
});
} catch (e) {
session.rspErr(1, 1);
utils.safeDumpErrStack(e);
console.log(e);
}
}
function init() {
app.registerHandler('BeNftMallTrans', 'buyPlanet', buyPlanet);
}
exports.init = init;

View File

@ -1,92 +0,0 @@
const app = require('j7/app');
const utils = require('j7/utils');
const bcutils = require('j7/bcutils');
const bcconst = require('common/bcconst');
const metaFactory = require('../metadata/factory');
const serviceFactory = require('../services/factory');
async function claim(session) {
try {
const account = bcutils.toNormalAddress(session.request('account', ''));
const netId = session.request('net_id');
const bc = serviceFactory.create('BlockChain');
{
const ret = await bc.init(netId);
if (!ret) {
session.rspErr(500, 'net_id error');
return;
}
}
{
if (!bc.isValidAddress(account)) {
session.rspErr(500, 'account error');
return;
}
}
const nftAddress = bc.getNftAddress(bcconst.BC_NFT_CLAIM_BOX);
const transModel = session.createModel('Transaction');
const usedTokenIdModel = session.createModel('UsedTokenId');
const {err, seqId} = await transModel.add(account, session.requestToJson(), netId);
if (err) {
session.rspErr(500, 'server internal error');
return;
}
const nowTime = utils.getUtcTime();
const tokenId = bcutils.genTokenId(
2006,
bcconst.BC_FUNC_COMMON,
nowTime,
1,
seqId
);
const transId = bcutils.genTransId
(
bcconst.BC_TRANS_FUNC_COMMON,
nowTime,
seqId,
[
tokenId
]
);
await transModel.update
(
seqId,
[
['trans_id', transId]
]);
const nonce = transId;
const signature = await bc.soliditySha3Sign(
account,
nftAddress,
nowTime,
nonce
);
const rspParams = [
nftAddress,
nowTime,
nonce,
signature
];
utils.arrayToStrings(rspParams);
session.rspData({
'trans_id' : transId,
'params': rspParams
});
} catch (e) {
session.rspErr(1, 1);
utils.safeDumpErrStack(e);
console.log(e);
}
}
function init() {
app.registerHandler('ClaimBox', 'claim', claim);
}
exports.init = init;

View File

@ -6,11 +6,7 @@ function add(name) {
} }
async function init() { async function init() {
//add('claim_box');
add('activate721nft'); add('activate721nft');
//add('game_item_mall');
//add('game_item_market');
//add('benftmall_trans');
} }
exports.init = init; exports.init = init;

View File

@ -1,99 +0,0 @@
const app = require('j7/app');
const utils = require('j7/utils');
const bcutils = require('j7/bcutils');
const bcconst = require('common/bcconst');
const contract = require('common/contract');
const serviceFactory = require('../services/factory');
async function buy(session) {
try {
const account = bcutils.toNormalAddress(session.request('account', ''));
const netId = session.request('net_id');
const price = session.request('price');
const currencyName = session.request('currency_name');
const bc = serviceFactory.create('BlockChain');
{
const ret = await bc.init(netId);
if (!ret) {
session.rspErr(500, 'net_id error');
return;
}
}
{
if (!bc.isValidAddress(account)) {
session.rspErr(500, 'account error');
return;
}
}
const currency = bc.getCurrencyAddressByName(currencyName);
const userAddress = bc.getUserAddress();
{
if (!bc.isValidAddress(currency)) {
session.rspErr(500, 'ceg error');
return;
}
}
const transModel = session.createModel('Transaction');
const usedTokenIdModel = session.createModel('UsedTokenId');
const {err, seqId} = await transModel.add(account, session.requestToJson(), netId);
if (err) {
session.rspErr(500, 'server internal error');
return;
}
const nowTime = utils.getUtcTime();
const transId = bcutils.genTransId
(
bcconst.BC_FUNC_COMMON,
nowTime,
seqId,
[
]
);
await transModel.update
(
seqId,
[
['trans_id', transId]
]);
const nonce = transId;
const orderId = transId;
const signature = await bc.soliditySha3Sign(
account,
orderId,
currency,
price,
nowTime,
nonce
);
const rspParams = [
orderId,
currency,
price,
nowTime,
nonce,
signature
];
utils.arrayToStrings(rspParams);
session.rspData({
'trans_id' : transId,
'order_id': orderId,
'params': rspParams
});
} catch (e) {
session.rspErr(1, 1);
utils.safeDumpErrStack(e);
console.log(e);
}
}
function init() {
app.registerHandler('GameItemMall', 'buy', buy);
}
exports.init = init;

View File

@ -1,107 +0,0 @@
const app = require('j7/app');
const utils = require('j7/utils');
const bcutils = require('j7/bcutils');
const bcconst = require('common/bcconst');
const contract = require('common/contract');
const serviceFactory = require('../services/factory');
async function buy(session) {
try {
const account = bcutils.toNormalAddress(session.request('account', ''));
const seller = bcutils.toNormalAddress(session.request('seller', ''));
const netId = session.request('net_id');
const price = session.request('price');
const currencyName = session.request('currency_name');
const orderId = session.request('order_id');
const bc = serviceFactory.create('BlockChain');
{
const ret = await bc.init(netId);
if (!ret) {
session.rspErr(500, 'net_id error');
return;
}
}
{
if (!bc.isValidAddress(account)) {
session.rspErr(500, 'account error');
return;
}
}
{
if (!bc.isValidAddress(seller)) {
session.rspErr(500, 'seller error');
return;
}
}
const currency = bc.getCurrencyAddressByName(currencyName);
const userAddress = bc.getUserAddress();
{
if (!bc.isValidAddress(currency)) {
session.rspErr(500, 'currency error');
return;
}
}
const transModel = session.createModel('Transaction');
const usedTokenIdModel = session.createModel('UsedTokenId');
const {err, seqId} = await transModel.add(account, session.requestToJson(), netId);
if (err) {
session.rspErr(500, 'server internal error');
return;
}
const nowTime = utils.getUtcTime();
const transId = bcutils.genTransId
(
bcconst.BC_FUNC_COMMON,
nowTime,
seqId,
[
]
);
await transModel.update
(
seqId,
[
['trans_id', transId]
]);
const nonce = transId;
const signature = await bc.soliditySha3Sign(
account,
seller,
orderId,
currency,
price,
nowTime,
nonce
);
const rspParams = [
orderId,
seller,
currency,
price,
nowTime,
nonce,
signature
];
utils.arrayToStrings(rspParams);
session.rspData({
'trans_id' : transId,
'params': rspParams
});
} catch (e) {
session.rspErr(1, 1);
utils.safeDumpErrStack(e);
console.log(e);
}
}
function init() {
app.registerHandler('GameItemMarket', 'buy', buy);
}
exports.init = init;

View File

@ -125,6 +125,10 @@ class Session {
} }
} }
getBody() {
return this.req.body;
}
} }
module.exports = Session; module.exports = Session;