update address, add chip locker

This commit is contained in:
cebgcontract 2022-11-04 18:06:41 +08:00
parent c5bd0a20df
commit d730742724
6 changed files with 548 additions and 38 deletions

View File

@ -6,19 +6,6 @@ export let abiNftMall: AbiItem[] = [
stateMutability: "nonpayable",
type: "constructor",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "nftToken",
type: "address",
},
],
name: "AddNFTSuppout",
type: "event",
},
{
anonymous: false,
inputs: [
@ -28,6 +15,12 @@ export let abiNftMall: AbiItem[] = [
name: "buyer",
type: "address",
},
{
indexed: true,
internalType: "uint256",
name: "nonce",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
@ -59,6 +52,12 @@ export let abiNftMall: AbiItem[] = [
name: "buyer",
type: "address",
},
{
indexed: true,
internalType: "uint256",
name: "nonce",
type: "uint256",
},
{
indexed: false,
internalType: "address[3]",
@ -106,19 +105,6 @@ export let abiNftMall: AbiItem[] = [
name: "OwnershipTransferred",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "nftToken",
type: "address",
},
],
name: "RemoveNFTSuppout",
type: "event",
},
{
inputs: [
{
@ -409,9 +395,9 @@ export let abiNftMall: AbiItem[] = [
{
inputs: [
{
internalType: "address[3]",
internalType: "address[4]",
name: "addresses",
type: "address[3]",
type: "address[4]",
},
{
internalType: "uint256[]",
@ -497,6 +483,11 @@ export let abiNftMall: AbiItem[] = [
name: "_tokenAddress",
type: "address",
},
{
internalType: "address",
name: "_buyerAddress",
type: "address",
},
{
internalType: "uint256[]",
name: "_datas",

423
src/abis/abiChipLocker.ts Normal file
View File

@ -0,0 +1,423 @@
import { AbiItem } from "web3-utils";
export let abiChipLocker: AbiItem[] = [
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "nft",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "nftId",
type: "uint256",
},
{
indexed: false,
internalType: "address",
name: "chip",
type: "address",
},
{
indexed: false,
internalType: "uint256[]",
name: "ids",
type: "uint256[]",
},
],
name: "ChipPlugin",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "nft",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "nftId",
type: "uint256",
},
{
indexed: false,
internalType: "address",
name: "chip",
type: "address",
},
{
indexed: false,
internalType: "uint256[]",
name: "ids",
type: "uint256[]",
},
],
name: "ChipUnplug",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "previousOwner",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "newOwner",
type: "address",
},
],
name: "OwnershipTransferred",
type: "event",
},
{
inputs: [],
name: "MAX_CHIP_NUM",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
constant: true,
},
{
inputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
name: "nftTokenSupported",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
constant: true,
},
{
inputs: [
{
internalType: "address",
name: "",
type: "address",
},
{
internalType: "address",
name: "",
type: "address",
},
{
internalType: "uint256[]",
name: "",
type: "uint256[]",
},
{
internalType: "uint256[]",
name: "",
type: "uint256[]",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "onERC1155BatchReceived",
outputs: [
{
internalType: "bytes4",
name: "",
type: "bytes4",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "",
type: "address",
},
{
internalType: "address",
name: "",
type: "address",
},
{
internalType: "uint256",
name: "",
type: "uint256",
},
{
internalType: "uint256",
name: "",
type: "uint256",
},
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
name: "onERC1155Received",
outputs: [
{
internalType: "bytes4",
name: "",
type: "bytes4",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "owner",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
constant: true,
},
{
inputs: [],
name: "renounceOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bytes4",
name: "interfaceId",
type: "bytes4",
},
],
name: "supportsInterface",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
constant: true,
},
{
inputs: [
{
internalType: "address",
name: "newOwner",
type: "address",
},
],
name: "transferOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "nftToken",
type: "address",
},
],
name: "addNFTTokenSupport",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "nftToken",
type: "address",
},
],
name: "removeNFTTokenSupport",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "nft",
type: "address",
},
{
internalType: "address",
name: "chip",
type: "address",
},
{
internalType: "uint256",
name: "nftId",
type: "uint256",
},
{
internalType: "uint256[]",
name: "chipIds",
type: "uint256[]",
},
],
name: "pluginChip",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "nft",
type: "address",
},
{
internalType: "address",
name: "chip",
type: "address",
},
{
internalType: "uint256",
name: "nftId",
type: "uint256",
},
{
internalType: "uint256[]",
name: "chipIds",
type: "uint256[]",
},
],
name: "unplugChip",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "nft",
type: "address",
},
{
internalType: "address",
name: "chip",
type: "address",
},
{
internalType: "uint256",
name: "chipId",
type: "uint256",
},
],
name: "chipOwnerTokenid",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
constant: true,
},
{
inputs: [
{
internalType: "address",
name: "nft",
type: "address",
},
{
internalType: "address",
name: "chip",
type: "address",
},
{
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
],
name: "pluginedChipNum",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
constant: true,
},
{
inputs: [
{
internalType: "address",
name: "nft",
type: "address",
},
{
internalType: "address",
name: "chip",
type: "address",
},
{
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
],
name: "pluginedChips",
outputs: [
{
internalType: "uint256[]",
name: "",
type: "uint256[]",
},
],
stateMutability: "view",
type: "function",
constant: true,
},
];

View File

@ -29,6 +29,12 @@ export let abiEvolveFactory: AbiItem[] = [
name: "to",
type: "address",
},
{
indexed: true,
internalType: "uint256",
name: "nonce",
type: "uint256",
},
{
indexed: false,
internalType: "bytes",
@ -63,6 +69,7 @@ export let abiEvolveFactory: AbiItem[] = [
],
stateMutability: "view",
type: "function",
constant: true,
},
{
inputs: [],

View File

@ -29,6 +29,12 @@ export let abiMinterFactory: AbiItem[] = [
name: "to",
type: "address",
},
{
indexed: true,
internalType: "uint256",
name: "nonce",
type: "uint256",
},
{
indexed: false,
internalType: "bytes",

View File

@ -82,13 +82,13 @@ export const DEFALUT_TOKENS = {
},
{
type: "erc20",
address: "0x4d46f75Be6E98dBA8E8384802a68d550DeB69770",
address: "0x94247cc867ED6277b901AFED817F3b13962814eD",
symbol: "CEC",
decimal: 18,
},
{
type: "erc20",
address: "0xb3212b66C337F83D277172D891Daf31776FF9D79",
address: "0x28901774C7C74D3C78a17A18697D7BFFB999d3f7",
symbol: "CEG",
decimal: 18,
},
@ -170,19 +170,19 @@ export const DEFAULT_NFT_TYPES = {
},
1338: {
hero: {
address: "0xCd36bFD6f5c9685A5b1DD953E8279eeC7d41e1E1",
address: "0xF07F3D7c1f64E9bC0005308c24e715D555195D6D",
type: "erc721",
},
weapon: {
address: "0xf1486cC376555A5035cFa85A761279c9876Daddc",
address: "0xFA58cA95FF52dFF0C57bC0BE54462894003a5394",
type: "erc721",
},
chip: {
address: "0xc56a7B89639738382abF20E1829d1ff1a4e21e33",
address: "0x615d4BE4Cba8e68efFe6F00e8E42AE07c4f84A7d",
type: "erc1155",
},
shard: {
address: "0x8BaA4d31B46a272b5a90F192Dcf20348E1845719",
address: "0x0f30db053d360225f43b845Cc8Fb0A456aFD4CA2",
type: "erc1155",
},
},
@ -210,8 +210,9 @@ export const JC_CONTRACTS = {
minterFactory: "0x5ecEFA2707e3f09B9A169ae696B36Df8dB7410ED",
},
1338: {
nftMall: "0x68731C006E8a7Fa45c6eAb579f8F7507b10f5571",
evolveFactory: "0xa390Fa8d4F032cCfCeC1CFF34f2eb549928DcEad",
minterFactory: "0x0DB24A927FFC3622884B7A3B6f1C694ED8092A01",
nftMall: "0xC04F9c0461DA8C19a60c8d4C95733b12D51e6Eca",
evolveFactory: "0x54B6f621e8c8dD2Cfcd49f2E7aD1dF19E60bf4B9",
minterFactory: "0x4b848789f6994d24cAEfaB187fD6c8bE3E0B97cf",
chipLocker: "0xb288bA87a02d34ec827a15487633D11faB79b718",
},
};

View File

@ -1,8 +1,10 @@
import Web3 from "web3";
import { abiNftMall } from "../abis/abiBENftMall";
import { abiChipLocker } from "../abis/abiChipLocker";
import { abiERC1155 } from "../abis/abiERC1155";
import { abiEvolveFactory } from "../abis/abiUserEvolveFactory";
import { abiMinterFactory } from "../abis/abiUserMinterFactory";
import { JC_CONTRACTS } from "../config/chain_config";
import { DEFAULT_NFT_TYPES, JC_CONTRACTS } from "../config/chain_config";
export class JCStandard {
private web3: Web3;
@ -232,4 +234,84 @@ export class JCStandard {
)
.send({ gas: (gas * 1.1) | 0 });
}
async pluginChip({
nftAddress,
chipAddress,
nftId,
chipIds,
}: {
nftAddress: string;
chipAddress: string;
nftId: string;
chipIds: string[];
}) {
let lockerAddress =
JC_CONTRACTS[window.jc.wallet.currentChain.id].chipLocker;
const contract = new this.web3.eth.Contract(abiChipLocker, lockerAddress, {
//@ts-ignore
from: jc.wallet.currentAccount(),
});
let chipInstance = new this.web3.eth.Contract(abiERC1155, chipAddress, {
//@ts-ignore
from: jc.wallet.currentAccount(),
});
let gas1 = await chipInstance.methods
.setApprovalForAll(lockerAddress, true)
.estimateGas({ gas: 1000000 });
await chipInstance.methods
.setApprovalForAll(lockerAddress, true)
.send({ gas: (gas1 * 1.1) | 0 });
let gas0 = await contract.methods
.pluginChip(nftAddress, chipAddress, nftId, chipIds)
.estimateGas({ gas: 1000000 });
//@ts-ignore
if (!jc.wallet.isInternal) {
setTimeout(() => {
// @ts-ignore
jumpToWallet();
}, 1500);
}
return await contract.methods
.pluginChip(nftAddress, chipAddress, nftId, chipIds)
.send({ gas: (gas0 * 1.1) | 0 });
}
async unplugChip({
nftAddress,
chipAddress,
nftId,
chipIds,
}: {
nftAddress: string;
chipAddress: string;
nftId: string;
chipIds: string[];
}) {
let lockerAddress =
JC_CONTRACTS[window.jc.wallet.currentChain.id].chipLocker;
const contract = new this.web3.eth.Contract(abiChipLocker, lockerAddress, {
//@ts-ignore
from: jc.wallet.currentAccount(),
});
let chipInstance = new this.web3.eth.Contract(abiERC1155, chipAddress, {
//@ts-ignore
from: jc.wallet.currentAccount(),
});
let gas0 = await contract.methods
.unplugChip(nftAddress, chipAddress, nftId, chipIds)
.estimateGas({ gas: 1000000 });
//@ts-ignore
if (!jc.wallet.isInternal) {
setTimeout(() => {
// @ts-ignore
jumpToWallet();
}, 1500);
}
return await contract.methods
.unplugChip(nftAddress, chipAddress, nftId, chipIds)
.send({ gas: (gas0 * 1.1) | 0 });
}
}