Skip to main content
. 2023 Jan 27;23(3):1410. doi: 10.3390/s23031410
Listing 3. Source code for creating tokens.
1 function createToken(
2  TokenMap storage self,
3  address key,
4  Blueprint memory blueprintData,
5  uint256 creationTimestamp,
6  bytes32 tokenId,
7  string memory tokenDescription,
8  Token[] memory tokensToMerge
9 ) public {
10  require(bucketContainTokens(self, tokensToMerge));
11  bytes32 blueprintId = blueprintData.blueprintId;
12  bytes32[] memory aggregatedTokensIds = new bytes32[](
13   tokensToMerge.length
14  );
15  string memory tokenName = blueprintData.token;
16  Token memory token = Token({
17   tokenId: tokenId,
18   blueprintId: blueprintId,
19   tokenName: tokenName,
20   tokenDescription: tokenDescription,
21   tokenCreator: blueprintData.blueprintCreator,
22   creationTimestamp: creationTimestamp
23  });
24  for (uint256 i = 0; i < tokensToMerge.length; i++) {
25   self.containedTokens[tokenId].push(tokensToMerge[i]);
26   aggregatedTokensIds[i] = tokensToMerge[i].tokenId;
27   deleteToken(self, key, tokensToMerge[i].tokenId, true);
28  }
29  insertToken(self, key, token);
30  insertHistoryData(
31   self,
32   tokenId,
33   tokenName,
34   tokenDescription,
35   msg.sender,
36   msg.sender,
37   creationTimestamp,
38   aggregatedTokensIds,
39   TokenHistoryState.Creation
40  );
41 }