/
mint.js
101 lines (89 loc) · 2.42 KB
/
mint.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
const {
get_EddsaSig_NFT_Mint
} = require('@loopring-web/loopring-sdk')
const {
LOOPRING_API_KEY,
EXCHANGE,
LOOPRING_USER_ACCOUNT_ID,
LOOPRING_USER_ADDRESS,
LOOPRING_PRIVATE_KEY,
NFT_QTY_AMOUNT,
CREATOR_FEE_BIPS,
VALID_UNTIL,
NFT_TYPE,
NFT_FACTORY,
IPFS_CID,
MAX_FEE_TOKEN_ID
} = require('./constants')
const NFTService = require('./NFTService')
const { ipfsCid0ToNftID } = require('./utils')
const nftService = new NFTService()
const getMintConfig = ({ tokenAddress, storageId, mintingFees, nftId }) => {
return {
exchange: EXCHANGE,
minterId: LOOPRING_USER_ACCOUNT_ID,
toAccountId: LOOPRING_USER_ACCOUNT_ID,
toAddress: LOOPRING_USER_ADDRESS,
nftType: NFT_TYPE,
counterFactualNftInfo: {
nftFactory: NFT_FACTORY,
nftOwner: LOOPRING_USER_ADDRESS,
nftBaseUri: ''
},
minterAddress: LOOPRING_USER_ADDRESS,
tokenAddress,
storageId,
nftId,
maxFee: {
tokenId: MAX_FEE_TOKEN_ID,
amount: mintingFees[MAX_FEE_TOKEN_ID].fee
},
royaltyPercentage: 5,
amount: NFT_QTY_AMOUNT,
creatorFeeBips: CREATOR_FEE_BIPS,
validUntil: VALID_UNTIL,
forceToMint: false
}
}
const main = async () => {
try {
const { tokenAddress } = await nftService.getTokenAddress(LOOPRING_API_KEY, {
nftOwner: LOOPRING_USER_ADDRESS,
nftFactory: NFT_FACTORY
})
if (!tokenAddress) {
throw new Error('Invalid token address')
}
const { offchainId } = await nftService.getNextStorageId(LOOPRING_API_KEY, {
accountId: LOOPRING_USER_ACCOUNT_ID,
maxFeeTokenId: MAX_FEE_TOKEN_ID
})
const { fees } = await nftService.getOffChainFee(LOOPRING_API_KEY, {
accountId: LOOPRING_USER_ACCOUNT_ID,
tokenAddress: tokenAddress
})
const nftId = ipfsCid0ToNftID(IPFS_CID)
const mintConfig = getMintConfig({
tokenAddress,
nftId,
storageId: offchainId,
mintingFees: fees
})
console.log(mintConfig)
const edssasig = get_EddsaSig_NFT_Mint(mintConfig, LOOPRING_PRIVATE_KEY)
console.log(edssasig)
const mintNft = await nftService.mintNFT(LOOPRING_API_KEY,
{
...mintConfig,
eddsaSignature: edssasig
}
)
if (mintNFT) {
console.log(mintNft)
console.log('Mint NFT is succeeded')
}
} catch (err) {
console.log(err)
}
}
main()